1. 简介
1.1 密码算法作用
- 机密性:敏感信息不泄露给未经授权的实体。
- 完整性:保证信息在储存和传输过程中不被修改。如使用hash函数校验。
- 真是性:可以确定远程用户或系统的身份。
- 不可抵赖性:证明一个唯一的用户进行了交易请求。用户是不可能对他或她的行为进行否认的。
1.2 常用密码算法
- 对称加密算法
- 非对称加密算法
- 哈希算法
2. 随机数
密码算法中的密钥、密钥材料、盐值、IV的生成都使用到随机数,应使用密码学安全的随机数发生器来产生。
可以使用哪些安全的随机数发生器?
如果产品支持使用硬件随机数接口则尽量使用硬件接口来产生随机数,如果不支持,可使用以下安全的随机数发生器或接口:
OpenSSL库的RAND_bytes( );
中软iPSI组件的CRYPT_random( );
JDK的java.security.SecureRandom( );
类Unix平台的/dev/random文件;
Windows平台的RtlGenRandom( );
VxWorks平台CCI组件的cciRand( )函数。
使用RAND_bytes()和CRYPT_random()前要在程序初始化时分别调用RAND_seed()和CRYPT_randSeed()设置随机数种子。可使用系统时间或程序运行时间(毫秒为单位)作为种子。
注意:C标准库函