求一段代码 如何用C# 来实现?等大牛100分送上

黄瓜黄瓜 2013-10-19 02:20:56
1 rsaPublickey = int(pubkey, 16)
2 key = rsa.PublicKey(rsaPublickey, 65537) #创建公钥
3 message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到
4 passwd = rsa.encrypt(message, key) #加密
5 passwd = binascii.b2a_hex(passwd) #将加密信息转换为16进制。
...全文
307 点赞 收藏 16
写回复
16 条回复
q125357 2013年11月02日
怎么领分的啊?
回复 点赞
yyl8781697 2013年10月20日
LZ如果想用c#版的RSA加解密,可以看看这个 整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码
回复 点赞
OSMeteor 2013年10月20日
这就是加密算法啊,百度一大堆啊
回复 点赞
秋的红果实 2013年10月20日
我也正在用到加密解密,关注
回复 点赞
tangxinggang 2013年10月20日
接分
回复 点赞
引用 7 楼 hdhai9451 的回复:
这是C#一个可逆的加密解密算法,我也在用
using System;   
using System.IO;   
using System.Security.Cryptography;   
  
using System.Text;   
  
namespace DataCrypto   
{   
 /// <summary>   
 /// 对称加密算法类   
 /// </summary>   
 public class SymmetricMethod   
 {   
    
 private SymmetricAlgorithm mobjCryptoService;   
 private string Key;   
 /// <summary>   
 /// 对称加密类的构造函数   
 /// </summary>   
 public SymmetricMethod()   
 {   
 mobjCryptoService = new RijndaelManaged();   
 Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";   
 }   
 /// <summary>   
 /// 获得密钥   
 /// </summary>   
 /// <returns>密钥</returns>   
 private byte[] GetLegalKey()   
 {   
 string sTemp = Key;   
 mobjCryptoService.GenerateKey();   
 byte[] bytTemp = mobjCryptoService.Key;   
 int KeyLength = bytTemp.Length;   
 if (sTemp.Length > KeyLength)   
 sTemp = sTemp.Substring(0, KeyLength);   
 else if (sTemp.Length < KeyLength)   
 sTemp = sTemp.PadRight(KeyLength, ' ');   
 return ASCIIEncoding.ASCII.GetBytes(sTemp);   
 }   
 /// <summary>   
 /// 获得初始向量IV   
 /// </summary>   
 /// <returns>初试向量IV</returns>   
 private byte[] GetLegalIV()   
 {   
 string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";   
 mobjCryptoService.GenerateIV();   
 byte[] bytTemp = mobjCryptoService.IV;   
 int IVLength = bytTemp.Length;   
 if (sTemp.Length > IVLength)   
 sTemp = sTemp.Substring(0, IVLength);   
 else if (sTemp.Length < IVLength)   
 sTemp = sTemp.PadRight(IVLength, ' ');   
 return ASCIIEncoding.ASCII.GetBytes(sTemp);   
 }   
 /// <summary>   
 /// 加密方法   
 /// </summary>   
 /// <param name="Source">待加密的串</param>   
 /// <returns>经过加密的串</returns>   
 public string Encrypto(string Source)   
 {   
 byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);   
 MemoryStream ms = new MemoryStream();   
 mobjCryptoService.Key = GetLegalKey();   
 mobjCryptoService.IV = GetLegalIV();   
 ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();   
 CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);   
 cs.Write(bytIn, 0, bytIn.Length);   
 cs.FlushFinalBlock();   
 ms.Close();   
 byte[] bytOut = ms.ToArray();   
 return Convert.ToBase64String(bytOut);   
 }   
 /// <summary>   
 /// 解密方法   
 /// </summary>   
 /// <param name="Source">待解密的串</param>   
 /// <returns>经过解密的串</returns>   
 public string Decrypto(string Source)   
 {   
 byte[] bytIn = Convert.FromBase64String(Source);   
 MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);   
 mobjCryptoService.Key = GetLegalKey();   
 mobjCryptoService.IV = GetLegalIV();   
 ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();   
 CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);   
 StreamReader sr = new StreamReader(cs);   
 return sr.ReadToEnd();   
 }   
 } 
虽然解决了,但是如果7L的回答对你有帮助,请把分给他。
回复 点赞
QuickPai 2013年10月19日
接分
回复 点赞
qiang1qiang 2013年10月19日
顶一顶就给分吗???
回复 点赞
happytonice 2013年10月19日
看到楼上写了这么多,驻足一观
回复 点赞
Andy__Huang 2013年10月19日
这是C#一个可逆的加密解密算法,我也在用
using System;   
using System.IO;   
using System.Security.Cryptography;   
  
using System.Text;   
  
namespace DataCrypto   
{   
 /// <summary>   
 /// 对称加密算法类   
 /// </summary>   
 public class SymmetricMethod   
 {   
    
 private SymmetricAlgorithm mobjCryptoService;   
 private string Key;   
 /// <summary>   
 /// 对称加密类的构造函数   
 /// </summary>   
 public SymmetricMethod()   
 {   
 mobjCryptoService = new RijndaelManaged();   
 Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";   
 }   
 /// <summary>   
 /// 获得密钥   
 /// </summary>   
 /// <returns>密钥</returns>   
 private byte[] GetLegalKey()   
 {   
 string sTemp = Key;   
 mobjCryptoService.GenerateKey();   
 byte[] bytTemp = mobjCryptoService.Key;   
 int KeyLength = bytTemp.Length;   
 if (sTemp.Length > KeyLength)   
 sTemp = sTemp.Substring(0, KeyLength);   
 else if (sTemp.Length < KeyLength)   
 sTemp = sTemp.PadRight(KeyLength, ' ');   
 return ASCIIEncoding.ASCII.GetBytes(sTemp);   
 }   
 /// <summary>   
 /// 获得初始向量IV   
 /// </summary>   
 /// <returns>初试向量IV</returns>   
 private byte[] GetLegalIV()   
 {   
 string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";   
 mobjCryptoService.GenerateIV();   
 byte[] bytTemp = mobjCryptoService.IV;   
 int IVLength = bytTemp.Length;   
 if (sTemp.Length > IVLength)   
 sTemp = sTemp.Substring(0, IVLength);   
 else if (sTemp.Length < IVLength)   
 sTemp = sTemp.PadRight(IVLength, ' ');   
 return ASCIIEncoding.ASCII.GetBytes(sTemp);   
 }   
 /// <summary>   
 /// 加密方法   
 /// </summary>   
 /// <param name="Source">待加密的串</param>   
 /// <returns>经过加密的串</returns>   
 public string Encrypto(string Source)   
 {   
 byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);   
 MemoryStream ms = new MemoryStream();   
 mobjCryptoService.Key = GetLegalKey();   
 mobjCryptoService.IV = GetLegalIV();   
 ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();   
 CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);   
 cs.Write(bytIn, 0, bytIn.Length);   
 cs.FlushFinalBlock();   
 ms.Close();   
 byte[] bytOut = ms.ToArray();   
 return Convert.ToBase64String(bytOut);   
 }   
 /// <summary>   
 /// 解密方法   
 /// </summary>   
 /// <param name="Source">待解密的串</param>   
 /// <returns>经过解密的串</returns>   
 public string Decrypto(string Source)   
 {   
 byte[] bytIn = Convert.FromBase64String(Source);   
 MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);   
 mobjCryptoService.Key = GetLegalKey();   
 mobjCryptoService.IV = GetLegalIV();   
 ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();   
 CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);   
 StreamReader sr = new StreamReader(cs);   
 return sr.ReadToEnd();   
 }   
 } 
回复 点赞
黄瓜黄瓜 2013年10月19日
我擦100分呢 多来两个人领啊
回复 点赞
Regan-lin 2013年10月19日
引用 3 楼 Net_Java_dram 的回复:
我已经解决了
回复 点赞
by_封爱 2013年10月19日
解决了还不结贴?
回复 点赞
黄瓜黄瓜 2013年10月19日
我已经解决了
回复 点赞
tcmakebest 2013年10月19日
rsa 加密和解密需要三套代码,一套是生成密钥,一套是加密,一套是解密,楼主是要哪块啊?
回复 点赞
敌敌畏耶 2013年10月19日
你这问题问的··貌似就是 给你一碗饭,坐等大牛来煮饭···
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告