博文
信息传输的安全需求与密码算法(2007-01-08 23:17:00)
摘要:密码算法
可以说,没有密码技术就没有信息安全,密码技术是保护信息安全的关键技术。到目前为止,密码技术已经从军事、外交领域走向公开,是结合数学、通信技术和计算机科学等学科于一身的交叉学科。
使用密码技术从根本上来说是对密码算法的使用。根据密码算法所使用的加密密钥和解密密钥是否相同,能否由加密过程推导出解密过程,或由解密过程推导出加密过程,可将密码算法分为对称密码算法(也称单钥密码算法、秘密密钥密码算法、对称密钥密码算法)和公开密钥密码算法(非对称密码算法、也称双钥密码算法、非对称密钥密码算法),除此之外,密码学中还较多使用Hash函数作为辅助的加密算法。
1、公开密钥密码算法
如果一个密码算法的加密密钥和解密密钥不同,或者由其中的一个推导不出另一个,则该算法就是公开密钥密码算法,简称公钥密码算法。使用公钥密码的每一个用户都拥有基于特定公钥算法的一个密钥对(e,d),公钥e公开,公布于用户所在系统认证中心(CA)的目录服务器上,任何人都可以访问,私钥d为所有者保管并严格保密,两者不相同且互为对方的解密密钥。
公钥密码的典型算法有:RSA,ECC,DSA,ElGamal,Diffie-Hellman(DH)密钥交换算法等。公钥密码能够用于数据加密、密钥分发、数字签名、身份认证、信息的完整性认证、信息的非否认性认证等。其中可以用于加密的算法有:RSA,ECC,ElGamal等;可以用于密钥分发的算法有:RSA,ECC,DH等;可以用于数字签名、身份认证、信息的完整性认证、信息的非否认性认证的有RSA,ECC,DSA,ElGamal等。
2、对称密码算法
如果一个密码算法的加密密钥和解密密钥相同,或由其中一个很容易推导出另一个,该算法就是对称密码算法。对称密码的特点是速度快、安全强度高,主要用作数据加密算法。
对称密码根据加密模式又可分为分组密码和序列密码。分组密码的典型算法有:DES, 3DES,IDEA,AES,SKIPJACK,Karn,RC2和RC5等,分组密码是目前在商业领域比较重要使用较多的密码,广泛用于信息的保密传输和加密存储;序列密码的典型算法有:RC4,SEAL,A5等,序列密码多用于流式数据的加密,特别是对实时性要求比较高的语音和视频流的加密传输。
3、单向密码算法
单向密码体制使用单向的散列(H......
欧几里德算法和扩展欧几里德算法(2007-01-04 21:14:00)
摘要:欧几里德算法
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a, d|b,而r = a - kb,因此d|r
因此d是(b,a mod b)的公约数
假设d 是(b,a mod b)的公约数,则
d | b , d |r ,但是a = kb +r
因此d也是(a,b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证
欧几里德算法就是根据这个原理来做的,其算法用C++语言描述为: void swap(int & a, int & b)
{
int c = a;
a = b;
b = c;
}
int gcd(int a,int b)
{
if(0 == a )
{
return b;
}
......
