【问题标题】:Saving a hashed string in Salesforce?在 Salesforce 中保存散列字符串?
【发布时间】:2020-05-14 20:36:24
【问题描述】:

不是 SFDC 专家,但需要集成托管在 SFDC 中的 Web 表单。由于其他原因,此页面需要捕获初始密码并将密码的加盐/sha256 版本发送给另一个系统或人类。我显然不想保存明文。

在保存之前散列密码的最简单的触摸方式是什么?我可以在浏览器中执行此操作,但我不想依赖 Javascript。

【问题讨论】:

    标签: hash salesforce sha256 apex-code


    【解决方案1】:

    是的,您应该将此代码添加到顶点触发器。

    trigger on sObject(before insert){
      for(sObject s: trigger.new){
        s.Hash__c = Crypto.generateDigest('SHA-256', Blob.valueOf(s.passwordString__c));
        s.passwordString__c = null;
      }
    }
    

    【讨论】:

      【解决方案2】:

      这是将字符串加密为 SHA256 哈希格式的代码:

      //value to process
      Blob data= Blob.valueOf('Any String');
      

      或在字段值的情况下

      Blob data= Blob.valueOf(sObject.FieldAPIName));
      Blob hash = Crypto.generateDigest('SHA-256', data);
      //Convert SHA-256 Hash data to String
      String encryptedString =EncodingUtil.convertToHex(hash);
      

      【讨论】:

      • 很高兴它对您有所帮助... :)
      【解决方案3】:

      Apex 有一个 Crypto 类,其中包含您需要的 generateDigest 方法,例如:

      Blob hash = Crypto.generateDigest('SHA-256', Blob.valueOf(passwordString));
      

      【讨论】:

      • 这应该可以解决问题。这可以附加到保存操作吗?
      • 是的,您可以使用 Chris 展示的触发方法,也可以编写自定义方法而不是默认的 save() 方法,该方法将计算哈希值,然后调用控制器的 save()。
      【解决方案4】:

      这对我有用 =>

      String abc = EncodingUtil.convertToHex(
                   Crypto.generateDigest('SHA-256', 
                   Blob.valueOf('test String')));
      

      【讨论】:

        猜你喜欢
        • 2017-05-03
        • 2020-03-07
        • 2011-09-30
        • 2020-03-17
        • 2012-02-10
        • 2011-12-25
        • 2021-09-05
        • 2013-11-04
        • 2017-12-21
        相关资源
        最近更新 更多