zoukankan      html  css  js  c++  java
  • 使用RSA加密时遇到的问题!

      X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
     // KEY_ALGORITHM 指定的加密算法  
      KeyFactory keyFactory = KeyFactory.getInstance("RSA");
      
      
     //获取公钥对象
      PublicKey publicKey = keyFactory.generatePublic(x509KeySpec);
      
      //RSA/ECB/PKCS1Padding
      String temp = keyFactory.getAlgorithm();
    
     //返回实现指定转换的 Cipher 对象
      Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
      cipher.init(Cipher.ENCRYPT_MODE, publicKey);
      return cipher.doFinal(data);

     最近在接入银联超级转账时遇到了一些加密问题,再此备份一下,以防忘记。

     这次主要的问题是 实现Cipher转换对象时出的问题,那家不靠谱的代理公司使用的是

     Cipher.getInstance(keyFactory.getAlgorithm());

     keyFactory.getAlgorithm());

     the name of the algorithm associated with this KeyFactory

     获得的值就是RSA,所以根本就没有按格式转换导致加密错误。

     而RSA/ECB/PKCS1Padding 是指补足位数,不足8位的用0x00补齐,少8位要补足8个 0x00

     常用的还有RSA/ECB/PKCS5Padding 这个是缺几位就用几补足,类似缺2位就补足 0x02

  • 相关阅读:
    PyQt4 调用串口API pySerial API说明
    树的计算
    数据结构单链表实现
    虚函数和抽象函数
    静态内存和堆栈
    二叉树学习图片---郝斌
    汉诺塔
    循环队列的实现
    队列的实现
    栈的应用
  • 原文地址:https://www.cnblogs.com/leonli/p/3413788.html
Copyright © 2011-2022 走看看