Password-based Encryption
Namespace
Methods
Class Public methods
PKCS5.pbkdf2_hmac(pass, salt, iter, keylen, digest) => string
Link
Parameters
-
pass
- string -
salt
- string -
iter
- integer - should be greater than 1000. 2000 is better. -
keylen
- integer -
digest
- a string or OpenSSL::Digest object.
Available in OpenSSL 0.9.9?.
Digests other than SHA1 may not be supported by other cryptography libraries.
Source: show
static VALUE ossl_pkcs5_pbkdf2_hmac(VALUE self, VALUE pass, VALUE salt, VALUE iter, VALUE keylen, VALUE digest) { VALUE str; const EVP_MD *md; int len = NUM2INT(keylen); StringValue(pass); StringValue(salt); md = GetDigestPtr(digest); str = rb_str_new(0, len); if (PKCS5_PBKDF2_HMAC(RSTRING_PTR(pass), RSTRING_LEN(pass), (unsigned char *)RSTRING_PTR(salt), RSTRING_LEN(salt), NUM2INT(iter), md, len, (unsigned char *)RSTRING_PTR(str)) != 1) ossl_raise(ePKCS5, "PKCS5_PBKDF2_HMAC"); return str; }
PKCS5.pbkdf2_hmac_sha1(pass, salt, iter, keylen) => string
Link
Parameters
-
pass
- string -
salt
- string -
iter
- integer - should be greater than 1000. 2000 is better. -
keylen
- integer
This method is available almost any version OpenSSL.
Conforms to rfc2898.
Source: show
static VALUE ossl_pkcs5_pbkdf2_hmac_sha1(VALUE self, VALUE pass, VALUE salt, VALUE iter, VALUE keylen) { VALUE str; int len = NUM2INT(keylen); StringValue(pass); StringValue(salt); str = rb_str_new(0, len); if (PKCS5_PBKDF2_HMAC_SHA1(RSTRING_PTR(pass), RSTRING_LENINT(pass), (const unsigned char *)RSTRING_PTR(salt), RSTRING_LENINT(salt), NUM2INT(iter), len, (unsigned char *)RSTRING_PTR(str)) != 1) ossl_raise(ePKCS5, "PKCS5_PBKDF2_HMAC_SHA1"); return str; }