C# к PHP base64 кодируют/декодируют

Попробуйте это:

credentials = {}

with open('email_list_test.csv', 'r') as f:

    reader = csv.DictReader(f, delimiter=';') # replace the delimiter character with the one you're using.

    for row in reader:
        credentials.update(row)
9
задан Dan 11 June 2009 в 13:53
поделиться

5 ответов

Вы должны, вероятно, URL Кодировать Вашу строку Base64 на стороне C# перед отправкой его.

И URL Декодирует его на php стороне до base64, декодирующего его.

Сторона C#

byte[] encbuff = System.Text.Encoding.UTF8.GetBytes("the string");
string enc = Convert.ToBase64String(encbuff);
string urlenc = Server.UrlEncode(enc);

и сторона php:

$data = $_REQUEST['in'];
$decdata = urldecode($data);
$raw = base64_decode($decdata);
15
ответ дан 4 December 2019 в 08:17
поделиться

Отметьте это + допустимый символ в кодировании base64, но при использовании в URL оно часто переводится назад в пространство. Это пространство может путать Ваш PHP base64_decode функция.

У Вас есть два подхода к решению этой проблемы:

  • Используйте % - кодирующий для кодирования + символ, прежде чем он оставит приложение C#.
  • В Вашем приложении PHP переведите пробелы назад в + прежде, чем передать base64_decode.

Первая опция является, вероятно, Вашим лучшим выбором.

7
ответ дан 4 December 2019 в 08:17
поделиться

Преобразовать. ToBase64String, кажется, не добавляет ничего дополнительного насколько я вижу. Например:

byte[] bytes = new byte[1000];
Console.WriteLine(Convert.ToBase64String(bytes));

Вышеупомянутый код распечатывает загрузку AAAAs с == в конце, который корректен.

Мое предположение - это $data на стороне PHP не содержит что enc сделал на стороне C# - проверяют их друг по другу.

1
ответ дан 4 December 2019 в 08:17
поделиться

в c#

this is a <B>long</b>string. and lets make this a3214 ad0-3214 0czcx 909340 zxci 0324#$@#$%%13244513123

превращается

dGhpcyBpcyBhIDxCPmxvbmc8L2I+c3RyaW5nLiBhbmQgbGV0cyBtYWtlIHRoaXMgYTMyMTQgYWQwLTMyMTQgMGN6Y3ggOTA5MzQwIHp4Y2kgMDMyNCMkQCMkJSUxMzI0NDUxMzEyMw==

для меня. и я думаю, что + повреждает все это.

0
ответ дан 4 December 2019 в 08:17
поделиться

Сторона PHP должна быть: $ data = $ _REQUEST ['в']; // $ decdata = urldecode ($ data); $ raw = base64_decode ($ decdata);

$ _REQUEST уже должен быть URL-декодирован.

0
ответ дан 4 December 2019 в 08:17
поделиться