哪一种加密算法是100%安全的?
2006-06-02 00:47
225 查看
哪一种加密算法是100%安全的?OTP!
OTP(One-Time-Pad,一次一密),是惟一在数学上被证明是不可破译的密码。OTP一般只用于秘密极端重要的情况:军事、外交等。但是,由于密钥长度很长以及安全地存储和交换密钥非常困难,OTP不适用于许多场合,所以实际应用中并不用OTP加密,而是用对称加密。
下面给出一个OTP 加密的例子:
public static string GenerateSalt(int size)//创建 salt 值
{
//创建强随机数
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
crypto.GetBytes(buff);
return Convert.ToBase64String(buff);
}
public static string GeneratePwdHash(string pwd, string salt)//加密
{
string saltpwd = string.Concat(pwd, salt);//用明文与 salt 值组合
string password = FormsAuthentication.HashPasswordForStoringInConfigFile(saltpwd, "SHA1");
return password;
}类 RNGCryptoServiceProvider 继承于 CryptoServiceProvider(CSP),用来产生一个强随机数,与 VB 6.0 的 Radom 函数有相同的功能,只是 .NET 的 PRNG(伪随机数发生器) 产生的随机数品质要好得多
OTP(One-Time-Pad,一次一密),是惟一在数学上被证明是不可破译的密码。OTP一般只用于秘密极端重要的情况:军事、外交等。但是,由于密钥长度很长以及安全地存储和交换密钥非常困难,OTP不适用于许多场合,所以实际应用中并不用OTP加密,而是用对称加密。
下面给出一个OTP 加密的例子:
public static string GenerateSalt(int size)//创建 salt 值
{
//创建强随机数
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
crypto.GetBytes(buff);
return Convert.ToBase64String(buff);
}
public static string GeneratePwdHash(string pwd, string salt)//加密
{
string saltpwd = string.Concat(pwd, salt);//用明文与 salt 值组合
string password = FormsAuthentication.HashPasswordForStoringInConfigFile(saltpwd, "SHA1");
return password;
}类 RNGCryptoServiceProvider 继承于 CryptoServiceProvider(CSP),用来产生一个强随机数,与 VB 6.0 的 Radom 函数有相同的功能,只是 .NET 的 PRNG(伪随机数发生器) 产生的随机数品质要好得多
相关文章推荐
- 一种适用于RFID读写器的加密算法及其实现
- Restful安全认证及权限的一种解决方案
- “认知安全”是怎样一种安全?
- 一种多线程安全的单例模式
- SHA1 安全加密算法 (微信分享获取签名时使用)
- 一种安全云存储方案设计(上)——基于二次加密的存储策略与加密图文混合检索
- 一种基于改进的HTTP摘要认证的SIP安全机制
- 安全加密算法与数据签名总结(1)
- 一种安全、高效、简单的登陆算法
- 【小技巧】DIV高度100%和透明的一种写法
- .NET安全系列之四:.NET中加密算法及证书
- 【网络安全】有一种冷叫做你妈觉得你冷
- Raid磁盘阵列真的是100%的安全吗?raid有哪些常见的故障?
- 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。
- 【安全】加密算法
- 一种简单、安全的Dota全图新思路 作者:LC 【转】
- Android应用安全开发之浅谈加密算法的坑
- paip.提升安全性---选择一个安全的加密算法
- 一种android安全机制-数字签名