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进制。

解决方案 »

  1.   

    rsa 加密和解密需要三套代码,一套是生成密钥,一套是加密,一套是解密,楼主是要哪块啊?
      

  2.   

    这是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();   
     }   
     } 
      

  3.   

    LZ如果想用c#版的RSA加解密,可以看看这个
    整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码