社区
C#
帖子详情
求教:des算法的原理??
yes4pierce
2004-12-21 04:21:22
如题,des 加密,解密的算法的原理是什么,请不吝赐教。
在C#中,怎样对字符实现des加密,解密??
...全文
200
4
打赏
收藏
求教:des算法的原理??
如题,des 加密,解密的算法的原理是什么,请不吝赐教。 在C#中,怎样对字符实现des加密,解密??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nga96
2004-12-21
打赏
举报
回复
建议先看看密码学吧,那是门很深的学问的
fanruinet
2004-12-21
打赏
举报
回复
http://www.50yi.com/book/bczl/200409/98.html
cnming
2004-12-21
打赏
举报
回复
我的blog,关于DES的
http://blog.csdn.net/cnming/archive/2004/12/09/210437.aspx
你指定好密钥即可,当然你要了解密钥的概念,DES是对称密钥的加密解密算法
#region TripleDES算法
public class ClassTripleDES
{
public ClassTripleDES()
{
}
//加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。
public static string Encrypt(string pass)
{
try
{
byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateEncryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
}
//解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。
public static string Decrypt(string str, string pass)
{
try
{
byte[] bt = Convert.FromBase64String(str);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateDecryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
}
//使用:
//string str = Encrypt("bbb");
//Console.WriteLine(Decrypt(str, "bbb"));
//加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。
public static string EncryptWithKey(string pass, string p_key)
{
try
{
byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateEncryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
}
//解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。
public static string DecryptWithKey(string str, string p_key)
{
try
{
byte[] bt = Convert.FromBase64String(str);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);
byte[] key = pdb.GetBytes(24);
byte[] iv = pdb.GetBytes(8);
MemoryStream ms = new MemoryStream();
TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();
CryptoStream cs = new CryptoStream(ms,tdesc.CreateDecryptor(key, iv),CryptoStreamMode.Write);
cs.Write(bt, 0, bt.Length);
cs.FlushFinalBlock();
return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());
}
catch(Exception ex)
{
throw ex;
}
}
}
#endregion
cnming
2004-12-21
打赏
举报
回复
原理是按位异或、移位等等组合的复杂算法,在C#中,有System.Security.Cryptography的名称空间,里头支持DES算法,所以不用你写了
cipher加密套件(openssl)
《openssl编程》 一个加密套件指明了SSL握手阶段和通信阶段所应该采用的各种
算法
。这些
算法
包括:认证
算法
、密钥交换
算法
、对称
算法
和摘要
算法
等。 在握手初始化的时候,双方都会导入各自所认可的多种加密套件。在握手阶段,由服务端选择其中的一种加密套件。 OpenSSL的ciphers命令可以列出所有的加密套件。openssl的加密套件在s3_lib.c 的 ssl3_ciphers数组
des
加解密
要和别的系统通讯,那边是c#和java。 两个版本的加密解密都一致。 可我的php就是找不到一致的方法。
求教
达人。。。谢谢! 下面是C#的加密解密,还有我找到php的两个方法 C# code //C# 版
DES
加解密
算法
using System; using System.Data; using System.Configuration; using Sy
Js:Crypto与PHP:openssl AES加密解密
crypto 是一个纯javascript写的加密
算法
类库 ,可以非常方便地在 javascript 进行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、
DES
、Rabbit、RC4、Triple
DES
加解密。 因为需求是加密可逆,具有一定的安全性(对安全性要求不高),所以使用
DES
或AES即可,我用的是AES; 加密解密固定
算法
是相通的 只要找到对应的加解密方法加解密就可实现 在使用CryptoJS中 常见的就是WordArray对象 我们把它理解为一个新的
tar 用 openssl 加密 使用
为什么80%的码农都做不了架构师?>>> ...
上帝掷骰子吗--量子物理史话
上帝掷骰子吗--量子物理史话 第一章黄金时代 一 我们的故事要从1887年的德国开始。位于莱茵河边的卡尔斯鲁厄是一座风景秀丽的城市,在它的城中心,矗立着著名的18世纪的宫殿。郁郁葱葱的森林和温暖的气候也使得这座小城成为了欧洲的一个旅游名胜。然而这些怡人的景色似乎没有分散海因里希?鲁道夫?赫兹(Heinrich Rudolf Hertz)的注意力:现在他正
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章