2014-10-18 6 views
0

Я новичок в шифровании и использовании этого класса для получения токенов. Может кто-нибудь помочь мне понять, что происходит с этими двумя функциями с помощью ссылок, видеоуроков и т. Д. Для более глубокого понимания. Цель состоит в том, чтобы понимать, а также реализовывать на других языках, используя ту же технику.зашифрованные токены в php

class Crypt { 

public static function encrypt($data, $secret) { 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
    $key = pack('H*', $secret); 
    return base64_encode($iv . mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv)); 
} 

public static function decrypt($data, $secret) { 
    $data = base64_decode($data); 
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); 
    $iv = substr($data, 0, $iv_size); 
    $data = substr($data, $iv_size); 
    $key = pack('H*', $secret); 
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv), chr(0)); 
} 
} 

благодаря

ответ

0

, а также реализовать на других языках, используя ту же технику,

я сомневаюсь, что,)

не простая тема. Вам придется копаться в разных шифрах и шифрованиях, особенно RIJNDAEL_128 и CBC, как и вы.

Если вы хотите узнать о rinjndael, тогда найдите AES (Advanced Encryption Standard).

SPEC Вы можете найти OFFICAL спецификацию по адресу: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

Книга Это capther AES из крипторасизма учебника Кристофа Парра и Ян Pelzl: http://wiki.crypto.rub.de/Buch/download/Understanding-Cryptography-Chapter4.pdf

Учебное пособие

Видео

Анимация/Презентация

Руководство по PHP - расширение Mcrypt

Код

+0

любопытно, почему это трудно реализовать на других языках, например, я рассматриваю это для Node.js, почему мне нравится этот алгоритм, поскольку он создает уникальные жетоны каждый раз для одной строки – user2727195

+0

Я думаю, что это уже существует: https://github.com/chengxianga2008/node-cryptojs-aes .. проверьте реализацию CryptoJS AES .. https://code.google.com/p /crypto-js/source/browse/tags/3.1.2/src/aes.js –

Смежные вопросы