手册目录

平台简介

媒体广告

淘宝开放平台开发文档

浏览25313
更新时间2022-04-11

背景:

1、基于安全考虑,电子凭证在getOrderCodes接口返回的code进行了签名,但是码商必须依赖这个接口比对自己库中的码,是否核销,是否过期等来做下一步的业务决策,所以向码商提供加密和解密的算法的文档

demo:

public class TripleDes {
   private static final String Algorithm = "DESede/CBC/PKCS5Padding"; // 定义
   
   private static final String secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 码商入驻给的密钥,如果遗忘了,请联系内部当时码商入驻接口人.
   
 
   /**
    * 加密
    * 
    * @param src
    *            需要加密的字符串
    * @param secret
    *            密钥,24字节
    */
   public static String encrypt(String src, String secret) {
      if (StringUtils.isEmpty(src) || StringUtils.isEmpty(secret)
            || secret.length() != 24) {
         return src;
      }
 
      try {
         // 生成密钥
         SecretKey deskey = new SecretKeySpec(secret.getBytes(), "DESede");
 
         // 加密
         Cipher c1 = Cipher.getInstance(Algorithm);
         IvParameterSpec iv = new IvParameterSpec(secret.substring(0, 8)
                .getBytes());
         c1.init(Cipher.ENCRYPT_MODE, deskey, iv);
         BASE64Encoder base64 = new BASE64Encoder();
         return base64.encode(c1.doFinal(src.getBytes()));
      } catch (java.security.NoSuchAlgorithmException e1) {
      } catch (javax.crypto.NoSuchPaddingException e2) {
      } catch (java.lang.Exception e3) {
      }
      return null;
   }
 
   /**
    * 解密
    * 
    * @param src
    *            需要解密的字符串
    * @param secret
    *            密钥,24字节
    */
   public static String decrypt(String src, String secret) {
      if (StringUtils.isEmpty(src) || StringUtils.isEmpty(secret)
            || secret.length() != 24) {
         return src;
      }
 
      try {
         // 生成密钥
         SecretKey deskey = new SecretKeySpec(secret.getBytes(), "DESede");
         Cipher c1 = Cipher.getInstance(Algorithm);
         IvParameterSpec iv = new IvParameterSpec(secret.substring(0, 8)
                .getBytes());
         c1.init(Cipher.DECRYPT_MODE, deskey, iv);
         BASE64Decoder base64 = new BASE64Decoder();
         return new String(c1.doFinal(base64.decodeBuffer(src)));
      } catch (java.security.NoSuchAlgorithmException e1) {
      } catch (javax.crypto.NoSuchPaddingException e2) {
      } catch (java.lang.Exception e3) {
      }
      return null;
   }
 
   public static void main(String[] args) {
      String code = "xxxxxxxxxxxxxxxxxxxxx";// 加密过的码
      String newSecret = secret.substring(0, 24);//加密串取前24位,这个请务必注意.
      System.out.println(new String(TripleDes.decrypt(code, newSecret)));// 解密
      System.out.println(new String(TripleDes.encrypt(
            TripleDes.decrypt(code, newSecret), newSecret))); // 加密
 
   }
}


FAQ

  • 关于此文档暂时还没有FAQ

相关视频

更多

免费

php8,我来也
初级php8,我来也

321928次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382532次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

283073次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13419次学习

收藏
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号