鉴权方式

使用图像识别服务需要提供签名以标明调用者身份.
签名使用AK/SK加密方式生成.

获得AK/SK

生态云文档

签名格式

签名格式为:
ak+":"+加密后的(ak+":"+(当前计算机时间+8小时)的毫秒数)
具体加密方式见代码示例部分

携带签名

签名字符串在Http请求的Header中的authorization字段携带

注意

在使用图像识别服务前请先联系图像识别团队,申请调用权限.

代码示例

public class TripleDes {
    private DESedeKeySpec desKeySpec;
    private IvParameterSpec ivSpec;

    public TripleDes(String sk) {
        try {
            byte[] keyBytes = sk.getBytes();
            this.desKeySpec = new DESedeKeySpec(keyBytes);
            this.ivSpec = new IvParameterSpec(sk.substring(0, 8).getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String generateSignature(String ak){
        long currentTime = System.currentTimeMillis()+8*60*60*1000;
        String data = ak + ":" + currentTime;
        String signAuth = ak + ":" + encryptData(data);

        return signAuth;
    }

    public String encryptData(String data) {
        byte[] crypted = encrypt(data.getBytes());
        return bytesToBase64(crypted);
    }

    public String decryptData(String data) {
        byte[] crypted = base64ToBytes(data);
        return new String(decrypt(crypted));
    }

    public byte[] encrypt(byte[] origData) {
        try {
            SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede");
            SecretKey key = factory.generateSecret(this.desKeySpec);
            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, key, this.ivSpec);
            return cipher.doFinal(origData);
        }  catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public byte[] decrypt(byte[] crypted) {
        try {
            SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede");
            SecretKey key = factory.generateSecret(this.desKeySpec);
            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, key, this.ivSpec);
            return cipher.doFinal(crypted);
        }  catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String bytesToBase64(byte[] buffer) {
        Base64.Encoder encoder = Base64.getEncoder();
        return encoder.encodeToString(buffer);
    }

    public static byte[] base64ToBytes(String value) {
        Base64.Decoder decoder = Base64.getDecoder();
        return decoder.decode(value);
    }
}
    public static void main(String[] args){
        String ak = "";
        String sk = "";

        TripleDes tripleDes = new TripleDes(sk);
        String sign = tripleDes.generateSignature(ak);
        System.out.println(sign);
    }

results matching ""

    No results matching ""