salesforce开发之 浅析apex的加密工具类(Crypto Class)

2022-08-02 18:40:16 浏览数 (1)

在接口集成时,http head中的数据通常需要加密处理。(token、password等)

apex内置了Crypto Class加密类提供调用。配合EncodingUtil类使用,可实现加密并编码。

salesforce提供了详细的文档:

https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_restful_crypto.htm

apex实现几种主流的加密方式:base64、MD5、SHA、AES代码举例:

base64:

代码语言:javascript复制
     EncodingUtil.base64Encode(Blob.valueOf(dataStr));

MD5:

代码语言:javascript复制
    public static String MD5Encode(String input){
        Blob blobStr = Blob.valueOf(input);
        //加密
        Blob hash = Crypto.generateDigest('MD5',blobStr);
        //编码
        String reStr = EncodingUtil.convertToHex(hash);
        return reStr;
    }

SHA:

代码语言:javascript复制
    public static String SHA1Encode(String input){
        Blob blobStr = Blob.valueOf(input);
        //加密
        Blob hash = Crypto.generateDigest('SHA1',blobStr);
        //编码
        String reStr = EncodingUtil.convertToHex(hash);
        return reStr;
    }

AES加密:

代码语言:javascript复制
    Blob data = Blob.valueOf(DataStr);
    //密钥,随机16位字符串
    String iv = EncodingUtil.ConvertTohex(Crypto.GenerateAESKey(128)).SubString(0, 16);
    //加密
    Blob encrypted = Crypto.encrypt('AES128',Blob.valueOf(password),Blob.valueOf(iv),data);
    //编码
    String secret = EncodingUtil.base64Encode(encrypted)

那么在官方文档中未提供的加密方式通过apex可以实现吗?例如RSA加密

---------------不能。由于项目内第三方系统使用rsa加密数据集成,头疼不已。但截止今天答案仍是不能。(除非用java做接口专门加密)

附上一个关于加密的有趣的网站

https://the-x.cn/cryptography/Des.aspx

0 人点赞