2017-12-13 4 views
4

ラーヴェルはリクエストとレスポンスのクッキーのハッシングが異なるのですか?ラーベールクッキーの暗号化

私はCORSとCSRFを設定しており、EncryptCookiesクラスからクッキーを除外すると、応答ヘッダーとリクエストヘッダーに同じCookieが表示されます。

ただし、私はそれらを暗号化しておくと、別の「暗号化文字列」が得られます。それが許容できる動作であるかどうかわかりません。唯一Laravel EncryptionについてKernel.php

+0

をそれがあるため、暗号化=ハッシュかもしれません。 –

+0

代わりにそれを "暗号化文字列"と呼ぶことができます:) – Norgul

+0

私が言ったのは、暗号化は毎回同じ "暗号化された文字列"を与える必要はないということです。例えば。 http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.html –

答えて

1

web部分の下に表示され

EncryptCookiesクラス:

Laravelの暗号化器は、AES-256およびAES-128暗号化 を提供するために、OpenSSLを使用しています。 Laravelに内蔵されている 暗号化機能を使用し、独自の "自宅で増殖した" 暗号化アルゴリズムを使用することは絶対にお勧めします。 Laravelの暗号化された値はすべて、メッセージ認証コード(MAC)を使用して の値を暗号化した後は変更できないように、 に署名されています。各暗号化のための

、値がペイロード、あなたが同じ値を暗号化した場合でも、異なるinitialization vectorAES-256/AES-128で暗号化し、異なるMACで署名され、常に異なるencryptの値が返されました。理解を容易にするため、この例を確認することができます。

$value = Crypt::encrypt('foo'); 
// eyJpdiI6ImVoNEVlVWpnYUdwZ1JHRlJWSGlTZEE9PSIsInZhbHVlIjoiVThpWjJNWVBqZnVsWjhLVWNDXC85VHc9PSIsIm1hYyI6IjFjMDRhOTM5ZThhOWRmYjk3Mzk0OWFmNTM3YWE1NDAzNzMxNWY5YTJmODMwNmQxZDE4NDllZGJkMjc1Y2I3ZmYifQ== 
base64_decode($value); 
// {"iv":"eh4EeUjgaGpgRGFRVHiSdA==","value":"U8iZ2MYPjfulZ8KUcC\/9Tw==","mac":"1c04a939e8a9dfb973949af537aa54037315f9a2f8306d1d1849edbd275cb7ff"} 

第二の試み:!

$value = Crypt::encrypt('foo'); 
// eyJpdiI6Ill5MmZleG5ycTBaZmQ5NnRDT3N3dVE9PSIsInZhbHVlIjoiTmgrRnlqajJjUk9qTk1qeHJLU21LUT09IiwibWFjIjoiNWEzZDRjZWMwMjg0ZDhlMjhlZWRiODg3ZWQ5MTcxN2I5N2JjY2ZmMzc0NTYyOTI5MThmOTk4YjAyZjM1YTRjMyJ9 
base64_decode($value); 
// {"iv":"Yy2fexnrq0Zfd96tCOswuQ==","value":"Nh+Fyjj2cROjNMjxrKSmKQ==","mac":"5a3d4cec0284d8e28eedb887ed91717b97bccff37456292918f998b02f35a4c3"} 
+0

暗号化された値が異なる場合、どのトークンが同じトークンであるかはどのように分かりますか? – Norgul

+0

Crypt :: decrypt()はそれを解読し、返された値は同じになります。 'Crypt :: decrypt(Crypt :: encrypt( 'foo'))== Crypt :: decrypt(Crypt :: encrypt( 'foo'))' – Tschallacka

+0

関連リンク:https://stackoverflow.com/questions/9049789/ aes-encryption-key-vs-iv – Ben