Tag: 密码学

如何在Ruby中使用PKI(公钥/私钥)加密?

我想加密一个字符串,以便最终用户可以validation它是否由我加密,但是他们不能自己加密它。 例如,我有一个私钥’private’,一个公钥’public’,一个消息’hello world’,并希望做类似的事情: private_key = ‘private’ public_key = ‘public’ message = ‘hello world’ encrypted_value = Crypto.encrypt(message, private_key) # encrypted_value is now ‘d92a01df241a3’ is_verified = Crypto.verify(message, public_key) # given just the public key and the message, is_verified will # be able to tell whether it’s accurate # note that the encrypted_value cannot be generated by just […]

使用Ruby OpenSSL库时无效的公钥

我正在尝试在Ruby中生成RSA密钥对,主要使用此博客文章中的示例。 这是我稍加修改的代码: def generate_keypair(passphrase) rsa_key = OpenSSL::PKey::RSA.new(2048) cipher = OpenSSL::Cipher::Cipher.new(‘aes-256-cbc’) private_key = rsa_key.to_pem(cipher, passphrase) public_key = rsa_key.public_key.to_pem return private_key, public_key end 这成功生成了私钥和公钥,我可以将它们写到文件系统上的文件中。 irb(main):002:0> private_key1, public_key1 = generate_keypair(‘test’) […output of keys…] irb(main):003:0> File.open(“key.pem”,”w”) {|f| f.write(private_key1) } => 1766 irb(main):004:0> File.open(“pubkey.pem”,”w”) {|f| f.write(public_key1) } => 426 但是,当我尝试使用此公钥时,OpenSSL会抱怨: $ openssl rsautl -encrypt -inkey pubkey.pem -pubin -in text.txt -out […]

解密使用Ruby在命令行上生成的salted AES文件

我想解密以前使用OpenSSL的命令行工具加密的ruby 2.1脚本中的文本文件: openssl enc -aes-256-cbc -a -salt -in my_file 如命令中所示,该文件是AES-256-CBC加密,盐渍和base64编码。 密码是已知的,但不是IV和密钥,它们是遵循此代码片段所必需的,取自ruby文档 : decipher = OpenSSL::Cipher::AES.new 256, :CBC decipher.decrypt decipher.key = key decipher.iv = iv plain = decipher.update(encrypted_text) + decipher.final 在尝试寻找答案的同时,我发现了gemAESCrypt gem,它可以简化en-and decrypting,但目前发布的版本与ruby 2.1不兼容。 看着它的源代码,我发现密钥是通过消化密码来检索的 ,而IV只是保留nil 。 所以我尝试了以下运行: encoded_and_encrypted_text = File.read my_file_path encrypted_text = Base64.decode64 encoded_and_encrypted_text.to_s.strip decipher = OpenSSL::Cipher::AES.new 256, :CBC decipher.decrypt decipher.key = OpenSSL::Digest::SHA256.new(my_password).digest plain_text […]