Encryption 加密/解密字符串的最佳算法&;密钥存储方法

Encryption 加密/解密字符串的最佳算法&;密钥存储方法,encryption,coldfusion,Encryption,Coldfusion,不建议在数据库中以纯文本形式存储电子邮件地址,因此我想找出实现这一点的最佳算法。选项包括: (来自文件) CFMX_COMPAT:ColdFusion MX和以前版本中使用的算法。此算法是最不安全的选项(默认) AES:国家标准与技术研究所(NIST)FIPS-197规定的高级加密标准 河豚:由Bruce Schneier定义的河豚算法 DES:NIST FIPS-46-3定义的数据加密标准算法 DESEDE:NIST FIPS-46-3定义的“三重DES”算法 另一个问题是钥匙应该存放在哪

不建议在数据库中以纯文本形式存储电子邮件地址,因此我想找出实现这一点的最佳算法。选项包括:

(来自文件)

  • CFMX_COMPAT:ColdFusion MX和以前版本中使用的算法。此算法是最不安全的选项(默认)

  • AES:国家标准与技术研究所(NIST)FIPS-197规定的高级加密标准

  • 河豚:由Bruce Schneier定义的河豚算法

  • DES:NIST FIPS-46-3定义的数据加密标准算法

  • DESEDE:NIST FIPS-46-3定义的“三重DES”算法

另一个问题是钥匙应该存放在哪里?在数据库中还是在源代码中?会不会加密?如果它将被加密,那么问题是如何存储加密该密钥的密钥


如果将其存储在源代码中,那么无源分发是否良好?

我将使用AES。它是列表中速度最快、实力最强的

至于在哪里存储密钥,这是一个64000美元的问题。你不应该把它放在数据库中(至少不应该和它用来加密的数据放在同一个数据库中),或者放在你的源代码中

密钥管理是一个非常重要的话题。NIST有数百页关于如何做到这一点的文件

密钥管理包括密钥的正确生成、交换、存储、旋转和销毁。您不应该永远使用同一个密钥(这是一个非常常见的错误),也不应该不正确地存储它


您应该查看NIST指南,并确定适合您的策略,并根据其敏感性充分保护您的数据

我会使用AES。它是列表中速度最快、实力最强的

至于在哪里存储密钥,这是一个64000美元的问题。你不应该把它放在数据库中(至少不应该和它用来加密的数据放在同一个数据库中),或者放在你的源代码中

密钥管理是一个非常重要的话题。NIST有数百页关于如何做到这一点的文件

密钥管理包括密钥的正确生成、交换、存储、旋转和销毁。您不应该永远使用同一个密钥(这是一个非常常见的错误),也不应该不正确地存储它


您应该查看NIST指南,并确定适合您的策略,并根据其敏感性充分保护您的数据

使用AES或DESEDE-它们很强大,而且根据我的经验,如果出于某种原因需要移植此信息,它们具有广泛的兼容性

至于密钥,这不是真正的关键数据。通常,您可以使用该数据的唯一信息段(如userId)和私钥(salt)创建compsite密钥,如代码库中的常量:

在全局设置/常量中的某个位置:

 <cfset myCodeBaseKey = "NateIsAwesome">

然后,当您准备好加密时:

 <cfset myKey = hash(myCodeBaseKey & user.userId, "SHA")>


另外,如果你用我听到的那句话,效果会更好P~

使用AES或DESEDE-它们很强大,根据我的经验,如果您出于某种原因需要移植此信息,它们具有广泛的兼容性

至于密钥,这不是真正的关键数据。通常,您可以使用该数据的唯一信息段(如userId)和私钥(salt)创建compsite密钥,如代码库中的常量:

在全局设置/常量中的某个位置:

 <cfset myCodeBaseKey = "NateIsAwesome">

然后,当您准备好加密时:

 <cfset myKey = hash(myCodeBaseKey & user.userId, "SHA")>


另外,如果你用我听到的那句话,效果会更好P~

我很好奇,为什么你认为明文存储电子邮件地址是不可取的。我同意,确保你不仅仅是在鼓吹这是不可取的想法。这是为了隐私。如果安全性被破坏,至少他们必须在获取加密数据之前破解另一层。请阅读以下内容:抱歉,但我不同意这些文章提供的任何证据表明在数据库中加密电子邮件是一个好主意。你也要加密名字和姓氏吗?家庭住址?邮政编码?电话?也许只是加密用户表中的所有内容。但是,您将要完成的全部任务是降低应用程序的速度。您可以在数据库级别进行加密。这将有助于保护数据免受某些危害,而不会严重影响性能。需要加密的主要是电子邮件和密码。我当然不希望我的电子邮件被公开披露(垃圾邮件),就像我很好奇为什么你认为明文存储电子邮件地址是不可取的一样。我同意,确保你不仅仅是在鼓吹这是不可取的想法。这是为了隐私。如果安全性被破坏,至少他们必须在获取加密数据之前破解另一层。请阅读以下内容:抱歉,但我不同意这些文章提供的任何证据表明在数据库中加密电子邮件是一个好主意。你也要加密名字和姓氏吗?家庭住址?邮政编码?电话?也许只是加密用户表中的所有内容。但是,您将要完成的全部任务是降低应用程序的速度。您可以在数据库级别进行加密。这将有助于保护数据免受某些危害,而不会严重影响性能。需要加密的主要是电子邮件和密码。我当然不希望我的电子邮件像被否决一样被公开披露(垃圾邮件),因为我认为这是一个糟糕的建议。说关键不关键不仅是错误的,而且与事实完全相反。密钥是密码系统中最重要的部分(假设有一个强大的算法)。使用一个非随机的、容易推导的密钥是一个糟糕的主意。密钥是一个独特的信息片段和一个私钥的散列组合,不容易推导或反转。还有,你误解了