Может кто-нибудь, пожалуйста, сообщите мне, где я ошибся в этом коде? Этот код написан на C # .NET. Мне нужно написать алгоритм для кодирования строки с использованием формата base64 с использованием C # .NET и затем декодировать с помощью base64_decode () с помощью PHP. См. Снипп ниже:
System.Security.Cryptography.RijndaelManaged rijndaelCipher = new System.Security.Cryptography.RijndaelManaged(); rijndaelCipher.Mode = System.Security.Cryptography.CipherMode.CBC; rijndaelCipher.Padding = System.Security.Cryptography.PaddingMode.Zeros; rijndaelCipher.KeySize = 256; rijndaelCipher.BlockSize = 128; byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(_key); byte[] keyBytes = new byte[16]; int len = pwdBytes.Length; if (len > keyBytes.Length) len = keyBytes.Length; System.Array.Copy(pwdBytes, keyBytes, len); rijndaelCipher.Key = keyBytes; rijndaelCipher.IV = keyBytes; System.Security.Cryptography.ICryptoTransform transform = rijndaelCipher.CreateEncryptor(); byte[] plainText = Encoding.UTF8.GetBytes(unencryptedString); byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length); return Convert.ToBase64String(cipherBytes);
Я думаю, что ваш образец кода выполняет «шифрование», и вы хотите «кодировать». Для кодирования строки с помощью Base64 в C # она должна выглядеть так:
static public string EncodeTo64(string toEncode) { byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode); string returnValue = System.Convert.ToBase64String(toEncodeAsBytes); return returnValue; }
И PHP должен выглядеть так:
<?php $str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw=='; echo base64_decode($str); ?>
Мне нужно написать алгоритм для кодирования строки с использованием формата base64 с использованием C # .net
На самом деле это довольно легко. Вам не нужен весь этот материал криптографии, который использует ваш код и вставляемый код. Достаточно:
byte[] bytes = Encoding.UTF8.GetBytes(inputString); string outputString = Convert.ToBase64String(bytes);
Если вы планируете отправлять данные с C # на PHP через HTTP GET-запрос, не забудьте указать UrlEncode. См. Этот вопрос: