Slide 30
Slide 30 text
Symmetric encryption Hash Passwords as keys Summary
PBKDF2 and symmetric encryption in Ruby
§
1 require ’openssl ’
2
3 message = "Był na Żmudzi ród możny Billewiczów, od Mendoga
4 się wywodzący , wielce skoligacony i w całym Rosieńskiem nad
5 wszystkie inne szanowany."
6 password = "Litwo Ojczyzno moja , Ty jesteś jak zdrowie"
7
8 # Generate key from password
9 salt = OpenSSL :: Random. random_bytes (16) # save with ciphertext
10 iter = 10 _000
11 key_len = 32 # e.g. for AES -256
12 digest = OpenSSL :: Digest.new(’SHA512 ’)
13 key = OpenSSL :: PKCS5. pbkdf2_hmac (password , salt , iter ,
14 key_len , digest)
15 # Encrypt message
16 c = OpenSSL :: Cipher.new ’AES -256 - CTR ’ # CTR makes stream cipher
17 c.encrypt
18 c.key = key
19 iv = c.random_iv
20 encrypted = c.update message
21 # deliver ciphertext with salt and IV
22 puts "ENCRYPTED :\n#{ encrypted}"
¦ ¥
Wojciech Rząsa, @wrzasa, KIiA PRz RRUG#3, Symmetric Cryptography in Ruby 22/26