加密机制

AES是什么

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是目前对称密钥加密中比较通用的一种加密方式。

AES密钥有什么用

炼金台开放平台所有API均要求对接口的请求内容和响应内容进行AES加密。加密后,在网络上传输的接口报文内容将会由明文内容变为密文内容,可以大大提升接口内容传输的安全性。

AES密钥与签名的关系

AES密钥是对接口请求和响应内容进行加密,密文无法被第三方识别,从而防止接口传输数据泄露。
调用方要对请求体先做AES加密,然后对密文进行签名。

AES密钥获取

请联系对接专员获取。

使用AES密钥加解密

加密算法demo

{% codetabs name=”Java”, type=”java” -%}
public static String encrypt() throws Exception {

  1. String key = "调用方的AES秘钥";
  2. String content = "需要加密的内容";
  3. String charset = "UTF-8";
  4. String fullAlg = "AES/CBC/PKCS5Padding";
  5. Cipher cipher = Cipher.getInstance(fullAlg);
  6. IvParameterSpec iv = new IvParameterSpec(initIv(fullAlg));
  7. cipher.init(Cipher.ENCRYPT_MODE,
  8. new SecretKeySpec(Base64.decodeBase64(key.getBytes()), "AES"),
  9. iv);
  10. byte[] encryptBytes = cipher.doFinal(content.getBytes(charset));
  11. return new String(Base64.encodeBase64(encryptBytes));
  12. }
  13. private static byte[] initIv(String fullAlg) throws GeneralSecurityException {
  14. Cipher cipher = Cipher.getInstance(fullAlg);
  15. int blockSize = cipher.getBlockSize();
  16. byte[] iv = new byte[blockSize];
  17. for (int i = 0; i < blockSize; ++i) {
  18. iv[i] = 0;
  19. }
  20. return iv;
  21. }

{%- language name=”Python”, type=”py” -%}
码农正在加班编写中。
{%- language name=”PHP”, type=”php” -%}
码农正在加班编写中。
{%- endcodetabs %}

解密算法demo

{% codetabs name=”Java”, type=”java” -%}
public String decrypt() throws Exception {
String key = “调用方的AES秘钥”;
String content = “需要解密的内容”;

  1. //反序列化AES密钥
  2. SecretKeySpec keySpec = new SecretKeySpec(Base64.decodeBase64(key.getBytes()), "AES");
  3. //128bit全零的IV向量
  4. byte[] iv = new byte[16];
  5. for (int i = 0; i < iv.length; i++) {
  6. iv[i] = 0;
  7. }
  8. IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
  9. //初始化加密器并加密
  10. Cipher deCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  11. deCipher.init(Cipher.DECRYPT_MODE, keySpec, ivParameterSpec);
  12. byte[] encryptedBytes = Base64.decodeBase64(content.getBytes());
  13. byte[] bytes = deCipher.doFinal(encryptedBytes);
  14. return new String(bytes);
  15. }

{%- language name=”Python”, type=”py” -%}
码农正在加班编写中。
{%- language name=”PHP”, type=”php” -%}
码农正在加班编写中。
{%- endcodetabs %}

FAQ

关于此文档暂时还没有FAQ