Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala pessoal, estou com problema ao guardar o resultado de openssl_random_pseudo_bytes(16); no bd, gera erro
Código 1366, Incorrect string value '\xB5\xE1\x81....' for column 'nome_da_coluna' at row 1.
Sei q o valor está em hexdecimal, já tentei dar base64 encode e decode, se eu der bin2hex() diz q estourou e passou os 16 bits esperado, só para entenderem o contexto, estou trabalho com criptografia usando openssl_encrypt()
estou com "pau" no $iv
ex do php.net:
<?php
$encryption_key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(16);
$data = openssl_random_pseudo_bytes(32);
for ($i = 0; $i < 5; $i++) {
$data = openssl_encrypt($data, 'aes-256-cbc', $encryption_key, OPENSSL_RAW_DATA, $iv);
echo strlen($data) . "\n";
}
?>
só q preciso persistir esse $iv no bd para um webservice q acessa a mesma base descriptografar os dados...alguém manja uma solução?Alguém?
meu erro: Dar base64 no momento da criptografia, ou seja, o iv aceita até 16bytes e euu estava estourando ele.
Solução: Criptografar gerando openssl_random_pseudo_bytes(16) e no momento de persistir no bd dar base64_encode, ele vai para 24 bytes, no meu arquivo que descriptografa ou trago do bd de dou base64_decode e faço a função de novo.
Dessa forma o token não passa por sessão, não fica no código, a chave fora do escopo da aplicação servidor unix, arquivo com permissões configuradas e criptografado, a tabela token no bd é limpa de 30 em 30 minutos.
O que acontece se eu mantar o parametro $iv estático? ele simplesmente repete a criptografia.
Estou criptografando a senha dessa forma: