rfid加密算法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DES算法

对称密钥加密算法DES(Data Encryption Standard,数据加密标准)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年被美国政府采用。DES随后被美国国家标准局和美国国家标准协会承认。

DES算法共有Key, Data, Mode三个参数。DES使用56位密钥对64位的数据块进行加密。其中Key为8个字节共64位,有效位为56位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;

Mode为DES的工作方式,有加密或解密两种。

当Mode为加密状态时,用Key去把明文数据Data进行加密,生成Data的密文(64位)作为DES的输出结果;如若Mode为解密,则用Key去把密文Data解密,还原为Data的明文((64位)作为DES的输出结果。在使用DES时,双方预先约定使用的“密码”即Key,然后用Key 去加密数据;接收方得到密文后使用同样的Key解密得到原数据,这样便实现了安全性较高的数据传输。

DES是分组长度为64位的分组密码算法,密钥长度也是64位,其中每8位有一位奇偶校验位,因此,有效密钥长度为56位。DES算法是公开的,其安全性依赖于密钥的保密程度

(1)初始置换IP和初始逆置换IP’。将64位明文数据用初始置换IP进行置换,得到一个打乱顺序的64位明文分组,然后分成左、右等长的32位,分别记为LO和RO进行16轮完全类似的迭代运算后,将所得左、右长度相等的两半L16和L16交换得到64位数据R16和L16,最后再用初始逆置换IP’进行置换,产生密文数据组。置换表自左向右、自上而下的64个位置对应64位数据组,置换表中的数字表示将64位数据组从该数字所在位置的比特置换为该数字表示的位置的比特。

(2)迭代变换。迭代变换是DES算法的核心部分。每轮开始时将输入的64位数据分成左、右长度相等的两半,右半部分原封不动地作为本轮输出的64位数据的左半部分,同时对右半部分进行一系列的变换,即用函数f作用右半部分,然后将所得到的结果(32位数据)与输人数据的左半部分进行逐位进行异或,最后将所得的数据作为本轮输出的64位数据的右半部分。

(3)字密码的产生。给定64位的密且K,用置换选择1(PC’)作用,去掉了输入的第8, 16,

24, 32, 40, 48, 56, 64位,这8位是奇偶校验位,并重排实际的56位的密钥。将得到的56位数据分成左、右等长的28位,分别记为CO 和DO 。对l}is16,计算Ci=LSi(Ci-1)和Di=LSi(Di-1)。将每轮56位数据CiDi 用用置换选择2 (PC-2)作用,去掉第9, 18, 22, 25, 35, 38, 43, 54位,同时重排剩下的48位,输出作为K ,产生子密钥的密钥编排算法。

DES 的安全性完全依赖于密钥,与算法本身没有关系。目前攻击DES 的方法主要有差分攻击、线性攻击和相关密钥攻击等,其中最有效的方法是线性攻击。通过安全信道进行密钥传输,但是由于实际的传输信道的安全性并不理想,所以密钥在传输的过程中可能会被暴露。这是DES 加密算法所存在的不足之处。

RSA 算法

公钥密码的最大优点在于针对密钥管理方法的改进。在公钥密码系统中,加密密钥是公开的,任何人都可以采用这些公开的加密密钥对自己准备传输的消息进行加密。同时,只有正确的接受方才能够用自己所保管的解密密钥对密文进行解密,这些解密密钥须要妥善保存。与对称密钥密码体制相比,公钥密码中的密钥在处理和发送上更为方便和安全。

RSA 算法是第一个能同时用于加密和数字签名的公钥加密算法,也易于理解和操作。该算法于1977年由美国麻省理工学院MIT(Massachusetts Institute ofTechnology)的Ronal Rivest} Adi Shamir 和Len Adleman 三位年轻教授提出,并以三人的姓氏Rivest } Shamir 和Adlernan 命名为RSA 算法。该算法利用了数论领域的一个事实,那就是虽然把两个大质数相乘生成一个合数是件十分容易的事情,但要把一个合数分解为两个质数却十分困难。合数分解问题目前仍然是数学领域尚未解决的一大难题,至今没有任何高效的分解方法。与其他算法相比,RSA 算法具有明显的优越性,因为它无须收发双方同时参与加密过程,且非常适合于电子函件系统的加密。RSA 从提出到现在的数十年间,经历了各种攻击的考验,逐渐为人们接受,是一种被研究得比较广泛的公钥算法。

RSA 算法的原理和步骤:

(1)选择两个大素数,p 和q;

(2)计算:n=p*q;

(3)然后随机选择加密密钥e ,使得gcd(e,(p-1)(q-1))=1,也就是说e 和(p-1)*(q-1)互质;

(4)最后,利用Euclid 算法,也就是利用辗转相除法,计算解密密钥d,使其满足e*d=1(mod(p-1)*(q-1))其中n 和d 要互质。数e 和n 是Public Key(公钥),d 是Private Key(私钥)。两个素数p 和q 可以舍弃。

(5)对于每一个密钥n,p,q,d,e ,定义:

加密变换为

n X X E e k mod )(=

解密变换为

n Y X D d k mod )(=

X 、Y 分别表示明文、密文。

如:明文为整数130

(1)选取p=3, q=5 。

(2)则n=15。

(3) (p-1)*( q-1) =8。选取e=11(大于p 和q 的质数)。

(4)通过d*11=lmod8,计算出d=3。

(5)明文为整数 13。则密文C 为(e 为幂次方)C = Pe mod r = 1792160394037 mod15=7。复原明文P 为:(d 为幂次方)P = Cd mod r = 343 mod 15 = 13 。

相关文档
最新文档