-1
私はC#で暗号化する方法を知りたいのですが、Laravel(PHP)が暗号化で解読できるということはありますか?Laravelの暗号化と互換性があるC#で暗号化するには?
これは私のC#の暗号化である:
private static readonly Encoding encoding = Encoding.UTF8;
public static void Main(string[] args)
{
string key = "ysWZKXsnB1aS38Qzj5cza01wd3wT1234";
string text = "Here is some data to encrypt!";
string encrypted = encrypt(text, key);
// Display the original data and the encrypted data.
Console.WriteLine("Original: {0}", text);
Console.WriteLine("Key: {0}", key);
Console.WriteLine("Encrypted: {0}", encrypted);
}
private static string encrypt(string plainText, string key)
{
RijndaelManaged aes = new RijndaelManaged();
aes.KeySize = 256;
aes.BlockSize = 128;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
aes.Key = encoding.GetBytes(key);
aes.GenerateIV();
ICryptoTransform AESEncrypt = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] buffer = Encoding.ASCII.GetBytes(phpSerialize(plainText));
String encryptedText = Convert.ToBase64String(Encoding.Default.GetBytes(Encoding.Default.GetString(AESEncrypt.TransformFinalBlock(buffer, 0, buffer.Length))));
String mac = "";
mac = BitConverter.ToString(hmacSHA256(Convert.ToBase64String(aes.IV) + encryptedText, key)).Replace("-", "").ToLower();
var keyValues = new Dictionary<string, object>
{
{ "iv", Convert.ToBase64String(aes.IV) },
{ "value", encryptedText },
{ "mac", mac },
};
JavaScriptSerializer serializer = new JavaScriptSerializer();
return Convert.ToBase64String(Encoding.ASCII.GetBytes(serializer.Serialize(keyValues)));
}
コードが正常に暗号化し、BU Laravelは "データの暗号化を解除できませんでした。" を返しますここでコード出力を解読しようとしています。
[AES-256-CBC暗号化された文字列を解読する方法](https://stackoverflow.com/questions/20297973/how-to-decrypt-an-aes-256-cbc-encrypted-string)の可能な複製 –
あなたのために十分な質問と答えですか? Laravelのドキュメントでは、その暗号化を使用するように指定されているためです。 –
共有リンクは、Laravelからの暗号化された文字列を復号化するためのリンクです。私が知ろうとしているのは、Laravelでも暗号化を解除できるように、C#経由で適切な方法で暗号化する方法です。 – doncadavona