我正在尝试使用私钥解密数据。我能够使用RSA和私钥解密密钥。现在,我想使用解密的密钥来解密数据。使用AES对数据进行加密,使用PHP对随机会话密钥进行加密。你能告诉我有什么例子吗?
这是我到目前为止拥有的代码。
static void Main(string[] args)
{
AsymmetricCipherKeyPair keyPair;
string protectedSecret = "U6XksFkhWV4.......eo3fRg==";
var decodedSecret = Convert.FromBase64String(protectedSecret);
string iv = "KLnP....wA==";
var decodedIV = Convert.FromBase64String(iv);
using (var reader = File.OpenText(@"c:\\private.key"))
keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject();
var decryptPKIEngine = new Pkcs1Encoding(new RsaEngine());
decryptPKIEngine.Init(false, keyPair.Private);
var secret = Encoding.UTF8.GetString(decryptPKIEngine.ProcessBlock(decodedSecret, 0, decodedSecret.Length));
var protectedData = Convert.FromBase64String("f8..Po=");
}发布于 2012-01-14 03:17:31
创建一个RijndaelManaged实例并将其Key和IV设置为您的字节数组。
然后,从CreateDecryptor()创建一个CryptoStream,用您的密文字节数组包装一个MemoryStream。
最后,从CryptoStream中读取明文。(如果它是实际的文本,您可能希望使用StreamReader)
发布于 2012-01-14 03:23:13
尝试此替换,在需要的地方放置必要的字符串
static string PHPDecrypt()
{
byte[] keyBytes = Convert.FromBase64String("U6XksFkhWV4.......eo3fRg=="); //put in your real values here and below for iv and cipherTextBytes
byte[] iv = Convert.FromBase64String("KLnP....wA=="");
byte[] cipherTextBytes = Convert.FromBase64String("Put the EncryptedText here");
var symmetricKey = new RijndaelManaged
{
Mode = CipherMode.CBC,
IV = iv, KeySize = 256,
Key = keyBytes,
Padding = PaddingMode.Zeros
};
using (var decryptor = symmetricKey.CreateDecryptor())
using (var ms = new MemoryStream(cipherTextBytes))
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) {
var plainTextBytes = new byte[cipherTextBytes.Length];
int decryptedByteCount = cs.Read(plainTextBytes, 0, plainTextBytes.Length);
return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
}
}https://stackoverflow.com/questions/8855843
复制相似问题