首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从密钥、种子、明文和密文确定加密算法

从密钥、种子、明文和密文确定加密算法
EN

Stack Overflow用户
提问于 2014-01-07 23:35:44
回答 2查看 2.4K关注 0票数 2

我们有软件可以加密数据库中的一些数据(比如信用卡号、社保号等),当数据被写入数据库时(读取时会再次解密)。

我们想要能够解密这个软件之外的数据,我们自己。

通过对数据的分析,我发现:

代码语言:javascript
运行
复制
var adminSoftwareUserName = "Admin";
var adminSoftwarePassword = "Password1";
var adminDatabaseUserID = "41646d696e"; // toHex("Admin")
var adminDatabasePassword = "0600ba25691008d870a958e99901048351281bf900"; // "06" + sha1("Admin:Password1").Truncate(-2) + "00"; weird, I know.
var seedValue = 5652653467996391684;
var adminMasterEncKey = "AQAj777KYvlNJ45LtB5DD1iOAOzLno5rdWTblRGYI8YWbXZ+75A=nNTLd6+81GoCnHsQYcisrprtBQyNRhDjKzScw7MpQBIsIpHseaQ8jq2pwvqfQ/DS1GxwQ2FV7N0/yTP/Qz5tuao+GsIpCBihXcdDJqQy4rTT+EEZQaYEgikRmGhZPSHw0HEJMnDHO1tkOsgtSDfrnecJ5HSGDN6/huVpEvCgWPl0HFtzTsD6zWYNGc70A9lH";
var ccNumEncKey = "AQAj777KsPF4Pc1SD0KyRthi7gXDhMz+BhGGmPvSjXAo8bwiJW0=qCqpVK/tmWyNd3q2faSOTlZC1Nn33DUfrv/kSnbFi9/QjAjZ+lF02//MWLpNZ0XGhV62tvCURBJFssgGlL6d2m4pKINX05TOEOzweQmCMS9Bgtl6E7FEw7U1BxjV4h1xKG5ZoSpiKY5ZQvCvmnEtRU5SrnbA+kYtPjR+rTMAEASnwbrWc0u1I4KbRBv+KXfe";

var plaintextCcNumber = "test";
//                                                                          | base64 here            |
var encryptedCcNumber = "AQAj777KFma5vZ9Bb1sX8+MFpkqa473IFWRShg+pKNmKwrm7BPg=zbDc68fp0zceSvevnNuG2g==";

每当我更改管理密码时,这两个键都会被更新,就像密文一样。种子不会变。

相同的明文值总是被加密到相同的密文中(只要密码/密钥没有更新)。

加密的CcNumber有一个base64编码部分。

密钥和密文总是以"AQAj777K“开头,即使在更新密码/密钥之后也是如此。

来自软件制造商的文件说明如下:

本软件符合PCI安全标准,要求持卡人信息使用标准算法和加密密钥长度进行加密。。 当您创建管理员用户和其他用户帐户时,该软件生成三条用于保护信用卡信息的信息:

  • 数据访问密钥:这是一个128位AES加密密钥,用于加密信用卡号码。
  • 每个用户的主密钥:这是为每个用户生成的128位AES加密密钥。主密钥加密数据访问密钥的副本和用户有权使用的任何其他加密密钥。
  • 密码派生密钥:这是一个128位AES密钥,它使用种子值和每个用户的密码生成。密码派生密钥用于保护每个用户的主密钥的副本。

当设置管理员用户和管理员创建其他用户帐户时,软件会创建这些密钥。管理员的主密钥用于管理其他用户的主密钥和每个用户可以使用的数据访问密钥的副本。

我的问题是:从所提供的信息来看,加密/解密的方法很容易猜测吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-08 08:46:11

我看到了几种方法:由密码分析人员对软件进行(a)分析,以及(b)与供应商联系。由于您不知道在加密之前对数据执行什么转换(如果有的话),尝试和错误的方法将无法工作。了解这一点需要上面的ab

票数 1
EN

Stack Overflow用户

发布于 2017-09-20 18:35:25

为了避免这个问题被删除,我将首先回答这个问题。

我的问题是:从所提供的信息来看,加密/解密的方法很容易猜测吗?

给定所提供的信息,可以确定用于加密和解密的方法。他们使用128位AES加密。理论上,您可以通过使用密码派生密钥来获取每个用户的主密钥,然后使用他们存储的数据访问密钥副本来访问数据访问密钥,但是您需要供应商使用的种子值(我假设您有一个用户密码,因为您应该可以访问Admin),这可能是任何东西。所以是的,这个方法很容易猜测。

然而,提交这个答案是为了防止任何试图解决QuickBooks问题的人使用这个答案作为前进的一步。虽然很明显,此用户正在尝试解密加密的QuickBooks数据,但请不要尝试使用此方法自己进行解密。如果用户无法查看加密的“AQAj777K”结果之外的数据,则使用Admin帐户删除并重新创建其用户帐户。这解决了当帐户密码更改但数据未被正确解密和重新加密时所引起的问题。

请留下给未来的用户,看看他们是否最终在这里搜索'AQAj777K‘的结果。

编辑由于主持人的回应。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20984233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档