RSA RSA加密 在RSA中,明文、密钥和密文都是数字。加密过程可以用下列公式: 加密公式中出现的E和N的组合就是公钥。 RSA解密 公式: 数字D和N组合起来就是RSA的私钥。 生成密钥对 求N N = p x q (p、q为质数)。q、q太小容易被破译,太大会导致计算时间很长。N = 17 x 19 = 323 求L(L是仅在生成密钥对的过程中使用的数) L = lcm(p-1,q-1) (L是p-1和q-1的最小公倍数)L = lcm(16,18) = 144 求E 1 < E < Lg...
-
【go密码学】-非对称加密算法
-
【go密码学】-Hash
Hash(散列函数) 简单说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。一个优秀的Hash算法,将能实现: 正向快速:给定明文,快速计算出hash值。 逆向困难:给定hash值,很难逆推出明文。 输入敏感:原始输入信息修改一点消息,产生的hash值看起来应该都有很大不同。 冲突避免:很难找到2段不同的明文,使他们的hash值相同。 典型的Hash算法 //将任何长度的字符串,通过运算,散列成0-15整数 func HashCode(key string) int { var in...
-
【go密码学】-对称加密算法
介绍 对称加密算法是相对于非对称加密算法而言,两者的区别在于,对称加密和加密和解密时使用相同的秘钥,而非对称加密在加密和解密时使用不同的秘钥(公钥和私钥)。常见的对称加密算法:DES、3DES、AES。 DES DES的基础结构,由IBM公司的Horst Feistel设计,因此称Feistel网络。在Feistel网络中,加密的每个步骤称为轮,经过初始置换后的64位明文,进行了16轮Feistel轮的加密过程,最后经过终结置换后形成最终的64位密文,如下图: go实现DES package m...