/// <summary>
/// RSA加密
/// </summary>
/// <param name="publickey"></param>
/// <param name="content"></param>
/// <returns></returns>
private string EncryptRSA(string source, string key)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(key);
cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), false);
return Convert.ToBase64String(cipherbytes);
} 别人代码是如此的.很奇怪这句 rsa.FromXmlString key 一定要xml格式吗
/// RSA加密
/// </summary>
/// <param name="publickey"></param>
/// <param name="content"></param>
/// <returns></returns>
private string EncryptRSA(string source, string key)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
rsa.FromXmlString(key);
cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), false);
return Convert.ToBase64String(cipherbytes);
} 别人代码是如此的.很奇怪这句 rsa.FromXmlString key 一定要xml格式吗
/// <summary>
/// 使用对称加密技术 DES 解密字符串。
/// </summary>
/// <param name="s">要解密的字符串。</param>
/// <param name="k">解密密钥(长度必须为 8 位)。</param>
/// <returns>解密后的字符串</returns>
public static string DESDecrypt(string s, string k)
{
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < (s.Length / 2); i++)
{
int num2 = Convert.ToInt32(s.Substring(i * 2, 2), 0x10);
buffer[i] = (byte)num2;
}
provider.Key = Encoding.ASCII.GetBytes(k);
provider.IV = Encoding.ASCII.GetBytes(k);
MemoryStream stream = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
stream2.Write(buffer, 0, buffer.Length);
stream2.FlushFinalBlock();
StringBuilder builder = new StringBuilder();
stream2.Close();
stream.Close();
return Encoding.Default.GetString(stream.ToArray());
} /// <summary>
/// 使用对称加密技术 DES 加密字符串。
/// </summary>
/// <param name="s">要加密的字符串。</param>
/// <param name="k">加密密钥(长度必须为 8 位)。</param>
/// <returns>加密后的字符串</returns>
public static string DESEncrypt(string s, string k)
{
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
byte[] bytes = Encoding.Default.GetBytes(s);
provider.Key = Encoding.ASCII.GetBytes(k);
provider.IV = Encoding.ASCII.GetBytes(k);
MemoryStream stream = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);
stream2.Write(bytes, 0, bytes.Length);
stream2.FlushFinalBlock();
StringBuilder builder = new StringBuilder();
foreach (byte num in stream.ToArray())
{
builder.AppendFormat("{0:X2}", num);
}
builder.ToString();
stream2.Close();
stream.Close();
return builder.ToString();
} 此消息通过 【CSDN论坛 Winform测试版】 回复!
此消息通过 【CSDN论坛 Winform测试版】 回复!
在.NET中,RSAParameters(等同于KEY)是由RSACryptoServiceProvider初始化时产生的,可以通过ExportParameters导出后,给另一个RSACryptoServiceProvider导入使用,但是这个RSAParameters
并未提供任何构造的方法,也就是说,JAVA的KEY与.NET的KEY是完全无法互相转换的。