首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >salesforce开发之 浅析apex的加密工具类(Crypto Class)

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

原创
作者头像
zcx
修改2022-08-02 18:40:16
修改2022-08-02 18:40:16
1.2K10
代码可运行
举报
运行总次数:0
代码可运行

在接口集成时,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
代码运行次数:0
运行
复制
     EncodingUtil.base64Encode(Blob.valueOf(dataStr));

MD5:

代码语言:javascript
代码运行次数:0
运行
复制
    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
代码运行次数:0
运行
复制
    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
代码运行次数:0
运行
复制
    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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档