问题标签 [lockbox-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
702 浏览

firemonkey - Delphi Firemonkey LockBox3 AES-CBC,PC和Android结果不同?

我需要一个用于 devolop Firemonkey Moblie App 的 AES 库。我测试了 ElAES 和 LockBox3,一切正常,符合 PC,但在 FMX And​​roid 上,两个库都返回错误的密文。

测试数据(AES128CBC PKCS5Padding):

测试代码:

这是LockBox3上的测试代码,相关:https ://github.com/TurboPack/LockBox3 ,函数'EncryptMemory'在Android上每次都返回未固定的密文,需要注意什么?

0 投票
0 回答
38 浏览

lockbox-3 - 使用 TurboPower LickBox 从 p7m 文件中提取内容

我需要使用 Delphi 2010 从 p7m 文件中提取内容。我会尝试使用 TP Lockbox,但找不到任何操作说明。

0 投票
1 回答
690 浏览

delphi - LockBox 3 加密不匹配在线工具,怀疑填充或密钥问题

我有一个客户端提供了一个 API,该 API 规定要发送给他们的数据必须使用AES、128 位密钥、ECB 模式和 PKCS5Padding进行加密。我正在尝试在 Delphi 10.3 Rio 中使用 LockBox 3,但没有得到与他们指出的用于验证的在线测试工具相同的加密字符串。它很近,但并不完全在那里。

在这里阅读了大量关于UnicodePKCS5Padding相关问题的内容,我已经到了要尝试的内容的结尾。我必须承认我在加密方面做得并不多,并且在我提出问题之前已经尽可能多地阅读以了解这一点。

我想确认几件事:

  • 密码和密钥的区别。我读过 LB3 使用密码来生成密钥,但我有来自客户端的关于如何生成密钥的具体说明,所以我制作了自己的 Base64 编码密钥并调用 InitFromStream 来初始化它。我相信这可以代替设置密码,对吗?或者密码可能仅由非对称密码(不是对称密码,如 AES)使用?
  • PKCS5Padding:我担心我在LB3 帮助网站上读到的内容说填充是根据密码、链接模式等的选择智能完成的。那么这是否意味着没有办法强制它使用特定的填充方法?我已将数据转换为字节数组并由自己的 PKCS5Padding 实现,但我认为 LB3 可能仍在填充之外。(我尝试过查看代码,但没有发现任何证据表明它正在这样做。)

我应该在 Delphi 中使用不同的加密库来完成这个吗? 我检查了DelphiEncryptionCompendiumDcPCryptV2,但我发现 LB3 似乎得到了最多的支持,而且我觉得它是最容易使用的,尤其是在我的 Unicode 版本的 Delphi 中。另外,我在过去几年中使用过很多 LockBox 2,所以我认为它会更熟悉(事实证明并非如此)。

为了说明我的尝试,我将代码从项目中提取到控制台应用程序中。也许我上面的假设是正确的,并且我的代码或 LB3 参数中有一个明显的错误,我不明白有人会指出:

该程序生成一个 216 个字符长的加密字符串,只有最后 25 个字符与在线工具生成的不同。

为什么?

0 投票
1 回答
543 浏览

delphi - 使用 LockBox 验证 RSA 签名

我想用 LockBox3 验证数字签名(如果版本 3 出于任何原因不适合,则为 LockBox2)。

我有一个 PEM 形式的公钥文件(我无法使用 LockBox 创建新密钥,因为我需要使用已经在其他地方使用的现有密钥对):

我不知道将哪种格式作为公钥提供给 LockBox。我尝试将 PEM 转换为 XML 并使用 RSAKeyValue>Modulus 部分,因为它看起来接近测试用例中使用的内容,但它也不起作用。(这里的公钥只是一个例子,取自我使用的转换器:https ://superdry.apphb.com/tools/online-rsa-key-converter )

不幸的是,无论我尝试过什么,我都没有设法将它用作 LockBox 中的公钥来验证消息的签名。

这是我到目前为止所基于的uLockBox_Signatory_TestCases.pas

这在 处失败LoadKeysFromStream(),更具体地说在StoreStream.ReadBuffer( L, SizeOf( L));in处失败,但uTPLb_RSA_Engine / LoadHugeCardinal_IfNotAlready()有一个EStreamError例外。

我究竟做错了什么?有人可以提供一个工作示例吗?

0 投票
1 回答
129 浏览

sql - Rails - 使用原始 SQL 查询的加密数据存储

我有用户表和兑换表。因此,出于安全原因,我们加密了用户表电子邮件和移动列。

加密前的用户表列:

加密后的用户表列:

用户.rb

救赎.rb

属于_to:用户

因此,我想在一个地方获取兑换信息以及用户详细信息。我在加密用户的手机和电子邮件之前的查询是

所以这会给我用户和他们的赎回计数。现在我已经使用LockboxBlindIndex加密了我的数据,并从 users 表中删除了 email 和 mobile 列,我应该遵循什么方法来实现上述查询的相同结果。

0 投票
2 回答
233 浏览

encryption - ClientDatSet.LoadFromFile(DeCryptFile(XMLFile))?

我有一个带有客户端数据集的 Delphi 10.4 程序,加载用户使用 OpenFile 对话框选择的 XML 文件。它工作得很好,并且根据 XML 的内容,fielddef 结构会自动设置。

现在我希望能够读取解密文件并使用 ClientDataSet.SaveToFile 保存加密文件。

目前我正在使用 Lockbox 3.7 解密所选文件,创建一个临时文件,然后由 loadfromfile 读取。同样,Savetofile 将数据写回临时文件,然后对其进行加密并为其指定名称。它工作得很好,但将临时文件留在磁盘上。即使我在代码中删除了临时文件,如果你知道如何恢复它也相对容易。所以像这样加密的安全性毕竟不是那么高。

正如主题所建议的那样,我希望能够直接在 LoadFromFile 中(以及 SaveToFile 中的类似加密)作为 fileEn(或 De)Crypt 函数执行解密,而不使用临时文件,但无法找到任何有用的功能。

有人知道这样的功能吗?如果是这样,请指出我正确的方向。最近几天我一直在使用谷歌搜索有用的东西,但它让我比以前更加困惑和迷失。

由 LockBox EnCryptFile(和 DeCryptFile)创建的临时文件被完全破坏到无法恢复的程度的替代解决方案将作为临时解决方案,因此也欢迎提供完全破坏文件的方法的指针.

提前感谢我能得到的任何帮助。

0 投票
2 回答
93 浏览

delphi - E2134 使用运行时类型信息构建时 Turbopower LockBox 代码出错

我必须使用运行时类型信息构建我的程序,因此检查编译器选项Emit runtime type information
但是有了这个设置,LockBox3 单元uTPLb_codecIntf.pas给出了错误E2134 类型在包含实现的行上没有类型信息(参见源代码的底部)。

LockBox3\run\源)文件夹位于我的库路径中(由安装指定)。
LockBox DCU 的d:\LockBox3\packages\Sydney\Delphi\Win32\Release\日期自安装之日起。

我怎样才能摆脱错误消息但 RTTI 可用?

编辑FWIW,这些是以下内容uTPLb_codecIntf.pas

0 投票
2 回答
253 浏览

delphi - LockBox 3 使用公共证书加密 RSA

在 Delphi 10.4 中,我尝试使用来自证书 (*.cer) 的公钥使用 RSA 加密字符串。问题是,我不知道如何将此证书传递给 RSA 函数。我有感觉,LockBox 3 有自己的格式来将公钥和私钥存储在一个文件中。

我是这样写的:

但我收到错误:流读取错误。

我使用 openssl 从公共证书中提取公钥:

输出是:

-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr5qMxLWtgkId2oRUfnPf 6MX+UouBQKOzyfG0J9LW9yya8Nr+ilPTSPp+hSBL/TD1ijUZ2RClyegnrojOKHS7 kp1ZFDQJwmKSW660NKeLbyu2fbcJFBuDmSVK8XwRsUaIpf4eixqx5wAZg8q64kJ9 R9e07WPqrC2+8p2F/7zlKsZ263CWZ/xE0M6I4RiKSA24iaiGVrppnIrX1oX2v/dq UNaQL3uIgH1WWtf4apnDA7MVei2Iz2NjFzLJ569wxzO92XBUrcEkqA7Xx0or6xij h0oFKxsygNqHzK3qf56McRi/xy1VFrGQsiZL1u4+cdIAu5/tWaecLFl0UOBBbYxz 9QIDAQAB -----END PUBLIC KEY -----

因为这个证书是公开的,并且可以从网站上广泛访问,所以我在这里粘贴以显示示例:

-----开始证书-----MIIFGTCCBAGgAwIBAgITYwABPJqEcB3zrmJ2agABAAE8mjANBgkqhkiG9w0BAQwF ADBdMRIwEAYKCZImiZPyLGQBGRYCcGwxEzARBgoJkiaJk/IsZAEZFgNnb3YxEjAQ BgoJkiaJk/IsZAEZFgJtZjEeMBwGA1UEAxMVUmVzb3J0IEZpbmFuc293IEkxIENB MB4XDTIwMDcyMzExMjgyM1oXDTIyMDcyMzExMjgyM1owgZExCzAJBgNVBAYTAlBM MRQwEgYDVQQIEwttYXpvd2llY2tpZTERMA8GA1UEBxMIV2Fyc3phd2ExHzAdBgNV BAoMFk1pbmlzdGVyc3R3byBGaW5hbnPDs3cxHDAaBgNVBAsTE0FwbGlrYWNqZSBL cnl0eWN6bmUxGjAYBgNVBAMTEWV0dy10c3QubWYuZ292LnBsMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr5qMxLWtgkId2oRUfnPf6MX+UouBQKOzyfG0 J9LW9yya8Nr+ilPTSPp+hSBL/TD1ijUZ2RClyegnrojOKHS7kp1ZFDQJwmKSW660 NKeLbyu2fbcJFBuDmSVK8XwRsUaIpf4eixqx5wAZg8q64kJ9R9e07WPqrC2+8p2F /7zlKsZ263CWZ/xE0M6I4RiKSA24iaiGVrppnIrX1oX2v/dqUNaQL3uIgH1WWtf4 apnDA7MVei2Iz2NjFzLJ569wxzO92XBUrcEkqA7Xx0or6xijh0oFKxsygNqHzK3q f56McRi/xy1VFrGQsiZL1u4+cdIAu5/tWaecLFl0UOBBbYxz9QIDAQABo4IBmzCC AZcwDgYDVR0PAQH/BAQDAgWgMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIS3 mFWE7NgBhrmTDYO18X6DrtM2gUKEotdOhMuPDgIBZAIBDDAdBgNVHQ4EFgQUnFcp uSFJZYUBUkIplCvJERbNN98wHwYDVR0jBBgwFoAUfR+t1nzLSol4VWy6EPLtM9Yx us0wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL3BraS5tZi5nb3YucGwvY2RwL3Jl c29ydF9maW5hbnNvd19pMV9jYSgxKS5jcmwwdQYIKwYBBQUHAQEEaTBnMD4GCCsG AQUFBzAChjJodHRwOi8vcGtpLm1mLmdvdi5wbC9haWEvcmVzb3J0X2ZpbmFuc293 X2kxX2NhLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL3BraS5tZi5nb3YucGwvb2Nz cDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwJwYJKwYBBAGCNxUKBBow GDAKBggrBgEFBQcDATAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQwFAAOCAQEAHatd TuoQDgaydiNDZFPvbvnqO0wmD/sH54LkXnf49hXHcGQRjhBc7xsSDbKzxHEORJ08 wNWWJa0H8cbKCLytBq49FQnENYoi5sgMetM5XGqGSYHwFLTFyAf8A9af8rpqfAEY HwmL6iIjz6NmSD52i3owOaMCop4pyC+UU5CZDqBrYd10JY4bWRm5NPdjIga0+mDm hQYEkoW/AEQQam+VmyLsJFGtBl/kr5+EFIUFw8X2tFAubNTuxQsveLo91Q0lHtSt BMBJ7MYnJeFCGDeuPM65nJtCxexDfWfWSTZvGrdJSUooD5iFSZodCkReP7ZLiQmB dPB1oIhW3y/VUem3+A== -----结束证书-----

错误“错误读取流”在功能中:

0 投票
1 回答
453 浏览

ruby-on-rails - 升级到 Rails 7 时迁移加密的数据库字段

问题

由于这个问题,我不得不将我的 RoR 应用程序升级到 Rails 7 。进行此升级时,由于 Rails 使用本机解密尝试解密字段,因此无法再读取使用Lockbox gem加密的我的 db 列。我将它作为一个问题发布在 GitHub 上,但我也想知道是否有其他人有解决方案可以将数据从一种加密格式迁移到 Rails 7.0 随附的新本机加密中(目前 Rails 的稳定版本是6.1.4 和 Rails 7.0.alpha 在 GitHub 的主分支上)

代码

应用程序/模型/journal_entry.rb

数据库/schema.rb

第一个日记帐分录的控制台输出

0 投票
0 回答
60 浏览

delphi - 将 Delphi LockBox 3 生成的 RSA 密钥保存到文件 - 难以理解的内容。如何获得可读的字符串?

据我了解,然后由例如https://travistidwell.com/jsencrypt/demo/生成的公钥和私钥文件是 RSA 密钥的标准格式。

我正在尝试使用 Turbo LockBox 3 生成相同格式的密钥。我正在根据本教程http://lockbox.seanbdurkin.id.au/Generate+an+RSA+key生成密钥,我正在使用保存生成的密钥编码:

但是生成的文件的内容是难以理解的——我只把它的一部分放在这里,因为我担心它可能包含一些敏感数据,因为我无法清楚地看到它到底包含什么:

此内容是否以某种方式编码或受密码保护。它可能是。但我没有指定任何密码。我希望该文件将包含明确分开并仅使用基本字符的私钥和公钥(甚至更多 - 文档说该文件将包含 2 对密钥,用于加密/解密的单独密钥对),但没有这样可识别的内容。

如何以可读格式保存 LockBox 3 键?例如,我以后可以用作加密/解密的字符串吗?