关于加密解密备忘

在数据传输中,同一定遇到Unicode一样,你一定会遇到加密问题.下面说说我的理解.

一.对称算法,非对称算法.

有加密就有解密,解密和解密都要用到一个或多个密码,俗称密钥.密钥一致的就是对称算法,而不一致的就是非对称算法.非对称如同你在一个门上放了两把锁一样,钥匙不同,也可以解锁.对称,就是一把钥匙开一把锁(当然例子也不太准确).

二.常用的对称算法

3DES,TEA等都是常用的算法.对称算法速度都很快.而TEA小巧高效,实现容易.TEA是Tiny Encrypt Arithmetic的缩写.顾名思义就是一种比较简单的小型加密算法.它用一个16字节的密钥去加密一个8字节的明文.得到一个8字节的密文.也可以反向从密文解密出明文,网络上有很多实现代码.据说,QQ聊天信息就使用了TEA.


三.RSA非对称算法.

找到一个非对称算法太不容易了,RSA公开密钥密码系统是由R.Rivest,A.Shamir,L.Adleman提出的,不仅仅可用于数据的加密,也可用于数字签名,其算法如下:

1、取两个相近的大素数p、q;
2、计算n=p*q,z=(p-1)*(q-1);
3、任取一个与z互素的整数e;
4、计算满足e*d=1 mod z 的整数d;
5、将明文m分成字符块s加密,每个块s小于n。现设明文m小于n,加密后形成密文c。
加密、解密过程如下:   
加密:c=m^e mod n
解密:m=c^d mod n
6、(n,e)和(n,d)分别称为“公开密钥”和“秘密密钥”。根据Euler定理可得:
  m=c^d mod n=(m^e mod n)^d mod n=m

实际上,公开密钥和秘密密钥是相对的.你可以公开任何一个,而秘密另外一个.要使用RSA,关键是大数算法.RSA被破解的难度就是大数运算.当然,网络上也有很多代码.


RSA,DES可以实用windows系统提供的wincrypt.h中的函数.Microsoft CryptoAPI使用了一个密钥库,可以实现HASH,数字签名.具体模型可以参考MSDN.

后记:
通过我的使用,发现TEA实现容易,RSA要通过大数算法,而D中的大数算法都是别人写的,看了两个,都不好用.只好抄别人的C代码了.而Microsoft CryptoAPI值得研究.

附上D的大数运算代码(都不好用).

也发现D2有了个大数运算的库实现.没有测试,貌似编译期运算.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值