题目:加密/解密的算法或方法
这是MSDN的信息。
forumID=e2798a59-79d5-4833-9c57-87d46a8b907a
各位有没有好的想法,或贴一个给我好好(给点一眼看不出来的哟,二眼就无所谓了)。
(那种是人都可以看出来的(如 把A-->95再编码等)。。嘿嘿!!)
这是MSDN的信息。
forumID=e2798a59-79d5-4833-9c57-87d46a8b907a
各位有没有好的想法,或贴一个给我好好(给点一眼看不出来的哟,二眼就无所谓了)。
(那种是人都可以看出来的(如 把A-->95再编码等)。。嘿嘿!!)
解决方案 »
- 如何用ASP.net中的FileUpload将txt内容写入数据库?
- socket通讯问题
- 交叉列表的问题,高手看下
- sqlhelper 连接数据库问题
- 请问各位大虾,同样通过C#2008开发的程序,不同的计算机上运行的结果还不一样?
- 如何避免因为网络不稳定导致数据传输失败而程序出错退出?
- SQL服务不能启动,急!!!!!
- 求一段简单的加密与解密的算法!
- 隐式转换
- 怎样将一个文件最后10个字节移到文件的最前面
- "在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的"
- winfrom窗口问题
这个好像是GUID啊
恩 就是guidA-->95
Encoding.GetBytes("A")[0].ToString();
正题: 有没有方法(算法)加密/解密
如 aaa123 ------加密------>ffewcsd5511fe6f4
ffewcsd5511fe6f4------解密------>aaa123
什么的吗
//加密
public string TripleDESEcrypt(string plainString,string key)
{
if(plainString.Equals(string.Empty))
{
return plainString;
}
TripleDESCryptoServiceProvider tdes=new TripleDESCryptoServiceProvider();
PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
byte[] tdesIV=new byte[8];
byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV);
byte[] btaCode=Encoding.Unicode.GetBytes(plainString);
tdes.Mode = CipherMode.ECB;
MemoryStream ms=new MemoryStream();
CryptoStream encStream = new CryptoStream(ms,tdes.CreateEncryptor(btaKey,tdesIV),CryptoStreamMode.Write);
encStream.Write(btaCode, 0, btaCode.Length);
encStream.FlushFinalBlock();
encStream.Close();
return System.Convert.ToBase64String(ms.ToArray());
}
//解密
public string TripleDESDecrypt(string encryptedString,string key)
{
if(encryptedString.Equals(string.Empty))
{
return encryptedString;
}
TripleDESCryptoServiceProvider tdes=new TripleDESCryptoServiceProvider(); PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
byte[] tdesIV=new byte[8];
byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV); byte[] btaCode=System.Convert.FromBase64String(encryptedString); tdes.Mode = CipherMode.ECB;
MemoryStream ms=new MemoryStream(btaCode); CryptoStream encStream = new CryptoStream(ms,tdes.CreateDecryptor(btaKey,tdesIV),CryptoStreamMode.Read);
StreamReader sr=new StreamReader(encStream,System.Text.Encoding.Unicode);
string strtmp=sr.ReadToEnd();
sr.Close();
encStream.Close(); return strtmp;
return Encoding.Unicode.GetString(ms.ToArray());
}
第二个参数是key(key自己写一个如:"123")
谢谢,试了一下,OKOKOK的
原理是什么。。哈哈
汗..不好意思.其实第一个return下边有好几行注释,我回贴的时候删注释少删了一行-_-!
第二个return没用.删掉
public string TripleDESDecrypt(string encryptedString,string key)
{
if(encryptedString.Equals(string.Empty))
{
return encryptedString;
}
TripleDESCryptoServiceProvider tdes=new TripleDESCryptoServiceProvider(); PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
byte[] tdesIV=new byte[8];
byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV); byte[] btaCode=System.Convert.FromBase64String(encryptedString); tdes.Mode = CipherMode.ECB;
MemoryStream ms=new MemoryStream(btaCode); CryptoStream encStream = new CryptoStream(ms,tdes.CreateDecryptor(btaKey,tdesIV),CryptoStreamMode.Read);
StreamReader sr=new StreamReader(encStream,System.Text.Encoding.Unicode);
string strtmp=sr.ReadToEnd();
sr.Close();
encStream.Close(); return strtmp;
}
C# code//加密
public string TripleDESEcrypt(string plainString,string key)
{
if(plainString.Equals(string.Empty))
{
return plainString;
……
[/Quote] byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV);
此处红色的代码为什么使用“TripleDES”?
如下代码为什么不使用(“Aes”,"SHA1",tdesIV)就执行报错:对象标识符(OID)未知。
那么AES的算法名(标识符)不是"AES",又是神马呢?(AES亦不对)
//加密
public string TripleDESEcrypt(string plainString,string key)
{
if(plainString.Equals(string.Empty))
{
return plainString;
}
AesCryptoServiceProvider acsp = new AesCryptoServiceProvider(); PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
byte[] tdesIV=new byte[16];
byte[] btaKey=derive.CryptDeriveKey("Aes","SHA1",0,tdesIV); byte[] btaCode=Encoding.Unicode.GetBytes(plainString);
acsp.Mode = CipherMode.ECB;
MemoryStream ms=new MemoryStream();
CryptoStream encStream = new CryptoStream(ms,acsp.CreateEncryptor(btaKey,tdesIV),CryptoStreamMode.Write);
encStream.Write(btaCode, 0, btaCode.Length);
encStream.FlushFinalBlock();
encStream.Close();
return System.Convert.ToBase64String(ms.ToArray());
}
[
[/Quote]Very Very Sorry,改正:
如下代码为什么不使用(“Aes”,"SHA1",tdesIV)就执行报错:对象标识符(OID)未知。
应该是:如下代码为什么使用(“Aes”,"SHA1",tdesIV)就执行报错:对象标识符(OID)未知。