0

私はc#で文字列を暗号化し、これをこのようなphpページに送信しています。

sfplr.Attributes.Add("href", "http://sml.com.pk/a/sfpl/reports.php?id=" + Convert.ToBase64String(Encoding.Unicode.GetBytes(emailid)));

このコードから生成されたURLは次のようになります

http://sml.com.pk/a/sfpl/reports.php?id=bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==

今、私はこれをphpで再度復号化したいbQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==ophpページに表示します。誰かがこれを行うのを手伝ってください

4

3 に答える 3

2

base64_decode関数を使ってみる

参照http://php.net/manual/en/function.base64-decode.php

あなたの場合、それは次のようになります。

<?php    
    echo base64_decode($_GET['id']);
?>
于 2012-11-27T09:32:42.167 に答える
2
$email =  base64_decode("bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==");
echo $email;  //****** You will get email here... */

.Net の "convert.tobase64string" は PHP の "base64_encode" と同じですか? を参照してください。

于 2012-11-27T09:36:15.313 に答える
0

このbase64_decode関数を使用すると、最初に に渡したバイトが返されますconvert.toBase64String

その後、次の方法でそれらを取得する必要があります。

<?php $emailBytes = base64_decode($_GET['id']); ?>

正しくシリアライズされていれば、Convert.toBase64String を使用して C# で作成した配列が返されます。 Encoding.getBytesを参照してください。

つまり、配列が期待どおりに渡された場合(これは疑わしい)

$msg = "";
foreach ($emailBytes as $character) {
    $msg .= (char) $character;
}

Encoding.getBytes さえ必要だとは思えません。引数として文字列を貼り付けることができます。

C#での使用

Convert.ToBase64String(emailid);

次に、php で行う必要があるのは、最初に述べた方法で取得することだけです。これにより、元の渡された文字列が得られます。

また、何度か指摘したように、これは実行中の暗号化であり、競合が発生しない方法で URL に渡すことができることを確認しているだけです。

暗号化したい場合は、C# 側でライブラリを使用し、メッセージをエンコードし、base64 でエンコードします。次に、PHP 側では、逆の操作を行う必要があります。

于 2012-11-27T09:46:02.807 に答える