web
부분에 나열되어
Laravel의 암호기은 AES-256 및 AES-128 암호화 제공 OpenSSL을 사용. Laravel에 내장 된 암호화 기능을 사용하고 자신의 "가정에서 재배 된" 암호화 알고리즘을 사용하지 않는 것이 좋습니다. Laravel의 암호화 된 값은 모두 메시지 인증 코드 (MAC)를 사용하여 값을 암호화 한 후에는 수정할 수 없도록 에 서명되어 있습니다. 같은 값, 페이로드를 암호화 할 경우에도
각 암호화
, 값이 다른 initialization vector와 AES-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"}
출처
2017-12-13 12:47:03
Ben
이 때문에 암호화 = 해싱 될 수 있습니다. –
대신에 "암호화 문자열"이라고 부릅니다. – Norgul
의미 : 암호화는 매번 동일한 "암호화 된 문자열"을 제공 할 필요가 없습니다. 예 : http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.html –