Рубиновый эквивалент - PullRequest
1 голос
/ 28 августа 2010

Я нахожусь в процессе реализации библиотеки Java в Ruby.Я наткнулся на следующий блокпост.Можно ли реализовать следующий код в ruby?Есть ли какие-нибудь рубиновые эквиваленты для byte [], IvParameterSpec, SecretKeySpec?

private String decrypt(String token)
{       
//parse token into its IV and token components
byte[] ivAndToken = Base64.decodeBase64(token);
byte[] iv = new byte[ivLength];
System.arraycopy(ivAndToken, 0, iv, 0, ivLength);

int length = ivAndToken.length - ivLength;
byte[] tokenBytes = new byte[length];
System.arraycopy(ivAndToken, ivLength, tokenBytes, 0, length);

//prepare initialization vector specification
IvParameterSpec spec = new IvParameterSpec(iv);

//create cipher instance based on transformer params
Cipher cipher = Cipher.getInstance(algorithm + mode + padding, CRYPTO_PROVIDER);

//convert key bytes into valid key format
Key key = new SecretKeySpec(Base64.decodeBase64(symkey), algorithm);

//initialize cipher for decryption
cipher.init(Cipher.DECRYPT_MODE, key, spec);

//decrypt the payload
String plaintext = new String(cipher.doFinal(tokenBytes));

return plaintext;

} 

1 Ответ

1 голос
/ 28 августа 2010

Вероятно, вам придется реализовать оба IvParameterSpec и SecretKeySpec в Ruby, если вы хотите, чтобы алгоритм вел себя точно так же, как в Java. byte[] это, конечно, просто байтовый массив. Вы, вероятно, захотите ознакомиться с ними (документы выше), а также, надеюсь, вы понимаете, как работают режимы блочного шифрования.

Если вы этого не сделаете, SecretKey ссылается на симметричный ключ (например, кодовую фразу), а IV - это вектор инициализации , одноразовый криптографический номер, используемый для создания разных шифрований одного и того же открытого текста, генерирует другой шифротекст , IV необходимы для всех режимов работы, кроме ECB. См. страницу википедии для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...