C#RSAの暗号化と復号化

公開鍵

publicKeyStr = "MIGJAoGBALogQ4t / yzBSbKH6ScXA54pAeSjvC / R13RIif4jmTbcJLqGFaQmj5WQnnmJqFsCI8lnTr4dmHcmSPvNhtWnEAznHBhGftQqcDuPmQNROMfUB7PKMteSWPhI5FpRxIXTTZC6GU6 / xOklVxy24 + zqSqMyYX9BOD8MxetvW9HYsSufNAgMBAAE =";

プライベートキー

privateKeyStr = "MIICXgIBAAKBgQC6IEOLf8swUmyh + knFwOeKQHko7wv0dd0SIn + I5k23CS6hhWkJo + VkJ55iahbAiPJZ06 + HZh3Jkj7zYbVpxAM5xwYRn7UKnA7j5kDUTjH1AezyjLXklj4SORaUcSF002QuhlOv8TpJVcctuPs6kqjMmF / QTg / DMXrb1vR2LErnzQIDAQABAoGBALjzRItDMsJStVYDovkZ5jrQNFVDrQp / cG0L0NVVnNYMDsU8D5MfxNtQLye2KeOqccBnBJ40D9d0No + cgSuXNmepkQVPy83iSOcL4tbR8Hhhh3jSn8hdkwoRgpLH9dO5PsNqP6Yunx0d99NW5qwTROAtWpScwCSaBxu3LKVJA8IVAkEA6cvD2lzZbTlDxULPo8RUqJ40pWZzZSbxbx5xwN6nWHLXpTJ175NtBjqTV7iQyhwQuIM1Oe1FEPwbXQTH0nkl7wJBAMvNgmBlN4P2LE5ZTjtVG3jw7DHlKb53zh0Kgwss3WePlYMpkQfGcYYwz / 0E7zihmhgiohYb7Czc / sYoSTX96gMCQQCdeL + sHoncRYve​​G8gbeCvFfvnaxgzHftlzjL / 1toJk0sVo4XoKKfRvE5kWppvvZcPlY4rAP44biJMtrgChRTRFAkAcpM6tM6ygzGmfvWeEaUrKLbpUrOu4DGiYplCSsoSPuJt / 6siqehackKG64wWoRPY + bCexyczg5VKdkS3w + 7X3AkEAuh6w7qL687jibL70z1lNhXZkLijnMEoD6s9qhCklh + s6iTKjTQ5x7aTitUoMaxxOk7dTvF8fBDRDJywMfrLnuA =="。

暗号化

暗号化された秘密静的な文字列(文字列データ、文字列pubkeyで)
{
使用してRSA RSA = RSA.Create()。
VAR公開= Convert.FromBase64String(pubkeyで)。
rsa.ImportRSAPublicKey(公開、アウトINT bytesreadPublic)。

dataArr = Encoding.UTF8.GetBytes(データ)でした。
MaxBufferSizeの= rsa.KeySize / 8-11でした。
= dataArr.Lengthでlenました。

使用のMemoryStream msread =新規のMemoryStream()。
使用のMemoryStream mswrite =新規のMemoryStream()。
一方、(LEN> 0)
{
msread.Position = 0。
msread.Write(dataArr、dataArr.Length - LEN、Math.Min(MaxBufferSizeの、LEN))。
mswrite.Write(rsa.Encrypt(msread.ToArray()、RSAEncryptionPadding.Pkcs1))。
LEN - = MaxBufferSizeの。
}

VAR resStr = Convert.ToBase64String(mswrite.ToArray())。

resStrを返します。
}

復号化

復号化された非公開静的な文字列(文字列データ、文字列prikey)
{
RSAのRSA = RSA.Createを(使用)。
VARのPrivateKey = Convert.FromBase64String(prikey)。
rsa.ImportRSAPrivateKey(int型bytesreadPrivateアウトのPrivateKey、);

dataArr = Convert.FromBase64String(データ)でした。
MaxBufferSize = rsa.KeySize / 8でした。
= dataArr.Lengthでlenました。

使用のMemoryStream msread =新規のMemoryStream()。
使用のMemoryStream mswrite =新規のMemoryStream()。
一方、(LEN> 0)
{
msread.Position = 0。
msread.Write(dataArr、dataArr.Length - LEN、Math.Min(MaxBufferSizeの、LEN))。
mswrite.Write(rsa.Decrypt(msread.ToArray()、RSAEncryptionPadding.Pkcs1))。
LEN - = MaxBufferSizeの。
}

VAR resStr = Encoding.UTF8.GetString(mswrite.ToArray())。

resStrを返します。
}

おすすめ

転載: www.cnblogs.com/lovewl2/p/11612646.html