新手问题 java 加密获取裸公钥转换成 ruby code

villins · 2016年01月12日 · 最后由 tianlitao 回复于 2016年03月17日 · 3185 次阅读

谷歌许久,查文档,想破头皮,依旧无解,求有没有什么建议的方式实现这下面代码的转换?

public class RsaKeyGenerateDemo{
  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
  keyPairGen.initialize(new RSAKeyGenParameterSpec(1408, new BigInteger("3")), new SecureRandom());
  KeyPair keyPair = keyPairGen.generateKeyPair();
  PublicKey publicKey=keyp.getPublic();
  System.out.println(publicKey.getModulus().toString(16).toUpperCase();)
}

更新:貌似这个 rsa gem 有点相似

#1 楼 @ceclachivo 嗯嗯,还是从中摸情脉络 不过又被另外的问题卡住 - -

Signature signature = Signature.getInstance("NONEwithRSA")

上面 java 代码不需要 digest ruby OpenSSL::PKey::RSA sign 不能不指定 digest,好蛋疼?

阁下能否编辑或追加原先问题上,把话说清楚?把已经解决,需要解决,以及有什么讨论的写明?这样只言片语,不懂你需要做啥;

@ceclachivo 不好意思,没说清楚。 之前没仔细研究 OpenSSL::PKey::RSA,仔细研究下可以利用 generate(1408, 3) 生成 rsa 实例,可以得到跟 java 生成相似的值,以为可以有思路,然后又遇到了 java 这个加密方式

Signature signature = Signature.getInstance("NONEwithRSA")

这个rsa加密不用加密方法,也就是 ruby 需要的 digest provider,而 ruby 是必须要穿 digest provider 还有其他的一些 convert 问题 所以个人感觉有点死路了,最后放弃了 ruby convert,启用了一个 java 服务来解决这个问题。

同问,碰到相似的问题了,卡到这里了,在想如何用 ruby code 写出来

Signature dsa = Signature.getInstance('MD5withRSA');

#6 楼 @tianlitao 你这个可以直接传 digest provider 为 MD5 应该可以了吧?

#7 楼 @villins 恩,已经解决了方法是

def rsa_sign(rsa_string)
  pri = OpenSSL::PKey::RSA.new File.read('sert.pem'), '111111'
  sign = pri.sign('md5', rsa_string.encode("GBK"))
  signature = sign.unpack('H*').first
  return signature
end
villins 关闭了讨论。 02月08日 17:13
需要 登录 后方可回复, 如果你还没有账号请 注册新账号