Ruby RSA 公钥加密问题

t_zires · 2013年05月27日 · 最后由 luikore 回复于 2013年05月27日 · 6507 次阅读

java 代码如下:


ASN1InputStream inputStream = new ASN1InputStream(HSMUtil.hexString2ByteArr(spSecurity.getPubKey()));
            RSAPublicKeyStructure struct = RSAPublicKeyStructure.getInstance(inputStream.readObject());
            RSAPublicKeySpec keySpec = new RSAPublicKeySpec(struct.getModulus(), struct.getPublicExponent());
            KeyFactory factory = KeyFactory.getInstance("RSA");
            PublicKey puk = factory.generatePublic(keySpec);

            Cipher cipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.ENCRYPT_MODE, puk);
            byte[] result = cipher.doFinal(HSMUtil.hexString2ByteArr(data));



这段代码是用 RSA 的公钥加密明文,如何用 ruby 实现?

我把 ruby1.9 支持的 ciphers 都输出来 (puts OpenSSL::Cipher.ciphers) 了,但是没有看到RSA/ECB/PKCS1Padding,有谁知道的帮帮忙了

手写? RSA 算法不难的,何况 ruby 天生支持大整数。。。

Cipher 是加密 RSA 在 PKey 模块下

pkcs1padding 应该是默认不用设置的,是公是母和 ecb 之类的 block chaining 一般写在 key file 里面了不用自己指定一遍吧?

key = OpenSSL::PKey::RSA.read File.open 'xxx.key'
data = [hex_data].pack 'H*'
key.public_encrypt data
需要 登录 后方可回复, 如果你还没有账号请 注册新账号