【发布时间】:2011-01-04 22:27:12
【问题描述】:
我正在考虑用 Java 为移动平台操作系统开发应用程序。
我在 C# WPF 中为 Windows 环境开发了一个应用程序。我正在使用加密流以使用以下代码加密和解密字符串。下面显示的代码只是加密
public string encrypt(string encryptionString)
{
byte[] clearTextBytes = Encoding.UTF8.GetBytes(encryptionString);
SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();
MemoryStream ms = new MemoryStream();
byte[] rgbIV = Encoding.ASCII.GetBytes("ryojvlzmdalyglrj");
byte[] key = Encoding.ASCII.GetBytes("hcxilkqbbhczfeultgbskdmaunivmfuo");
CryptoStream cs = new CryptoStream(ms, rijn.CreateEncryptor(key, rgbIV), CryptoStreamMode.Write);
cs.Write(clearTextBytes, 0, clearTextBytes.Length);
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
加密的字符串存储在在线数据库中。我需要做的是让 java 应用程序能够从数据库中读取字符串并使用来自 C# 应用程序的相同加密密钥解密字符串。
感谢您的帮助。
【问题讨论】:
-
这个使用什么算法?模式?填充?你需要知道这些东西才能解密。
-
我不认为这是重复的,因为上述问题涵盖了我使用 C# 的 Visual Basic,但可能相似但不同
-
@Erickson:.Net 的
SymmetricAlgorithm在 CBC 模式下默认为 PKCS7 填充。但通常你是正确的:你需要知道算法、模式和填充来完全指定加密方案。 -
VisualBasic.NET 和 C# 之间没有区别,除了语法。事实上,没有“C# CryptoStream”之类的东西,它的“.NET CryptoStream is used in [C#|VB]”。 IE。两种语言都使用相同的类。
标签: c# java encryption cryptostream