问题标签 [encryption-symmetric]

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 回答
415 浏览

encryption - Blowfish Block Size 64bits - 当输入不是 64bits 的倍数时该怎么办

我正在创建一个应用程序来用 Blowfish 加密一个未知长度的字符串。输入可以是任意长度,因此不一定是 8 个字节的倍数。

处理这种情况的标准方法是什么?也许用 0 填充字符串的末尾?大概有更优雅的方式?

提前致谢。

0 投票
1 回答
195 浏览

encryption - 交换对称密钥

我有一个将加密数据发送到 Web 服务的 WinForms 客户端。WinForms 客户端创建一个 Symmetric RijndaelManaged sessionKey 并且还有一个“硬编码的 RSA 非对称公钥”。

我正在使用 EncryptedXml 类,它可以很容易地打包我的数据。

Web 服务具有“硬编码”的私钥和公钥,并且可以成功解密 SessionKey,然后使用它来解密我发送的实际数据。

这几乎是由 EncryptedData 类自动处理的。

我遇到的问题是,在 Web 服务端,当我想回复时,我似乎无法弄清楚如何获取发送过来的 SessionKey。

在我对 Web 服务端进行任何解密之前,我可以看到加密的会话密钥,但在我解密 XML 之后,它就消失了(因此我没有任何会话密钥用于我的回复)。

任何想法如何获得这个未加密的密钥?

0 投票
1 回答
883 浏览

vb.net - 在 Visual Basic .NET 中使用 Rjindael 和 RSA 加密存储在二维码中的数据

我想加密一些数据(希望低于 500 字节)并将其存储在 QR 码中。最初我想使用 RSA,因此数据将使用用户 A 的私钥和用户 B 的公钥进行签名,但不幸的是,VB.NET 不喜欢加密那么多数据。我读过我应该使用 Rjindael 加密实际数据,然后使用 RSA 加密 Rjindael 使用的密钥。但是,我不太幸运能够在网上搜索某种教程或其他东西。

另外,如果我想将其存储在 QR 码上,我是否必须同时存储加密数据和 Rjindael 使用的加密密钥?你认为这一切都合适吗?我可能能够在中等纠错上使用版本 40(根据http://www.denso-wave.com/qrcode/vertable4-e.html,它存储了 18,672 个“数据位”),但我更愿意使用如果可能的话,一个较低的版本(即更小的)。

生成 QR 码不会是问题(我知道有一个 .NET 库),我只是对开始加密数据感到好奇。

谢谢你的帮助!

山姆

0 投票
2 回答
1631 浏览

security - 如何保护加密密钥免受逆向工程?

我的软件使用的是 AES Rijndael。

我使用 SHA-256 哈希从任意长度的字符串生成密钥,然后将其作为私钥和公钥传递,因为在这种情况下我不需要区分两者。

如何保护我的密钥不被从可执行文件中窃取?

我知道不要使用文字,而是在运行时通过一些预先确定的步骤生成密钥,但是在发送到 AES 初始化函数之前,密钥仍然会在内存中,因此可以很容易地检索到。

AES 显然非常安全,但是如果有人破坏了可执行文件,那对我有什么好处呢?

解决这个问题时有一些常见的做法吗?

0 投票
2 回答
3437 浏览

vb.net - 在 VB.NET 中,将 AES 密钥和加密数据写入相同的 MemoryStream 不起作用

我正在尝试使用对称加密来加密一些数据,并将解密所需的密钥与 MemoryStream 中的数据一起存储。(虽然我知道仅此一项在安全方面确实很愚蠢,但我将使用 RSA 来加密对称密钥。不过,现在,我正试图让这部分工作。)

我正在使用 FileHelpers 库来解析我的分隔符的数据(分号,因为我不相信我会在数据中有分号)。不幸的是,在我的解密函数中,当它解析时,它只返回一条记录。而且,如果我显示在此函数末尾创建的整个加密数据字符串,它似乎并没有使用多条记录。

我想知道当我创建新的加密流时,它是否默认为内存流的开头,所以当我写入加密数据时,它会覆盖我刚刚写入内存流的数据。你认为这是对的吗?

谢谢你的帮助!

0 投票
3 回答
14015 浏览

.net - 解密字符串时偶尔出现错误数据错误:System.Security.Cryptography.CryptographicException

在我的 ASP.NET WebForms 应用程序中(该应用程序在 windows server 2008 R2、IIS 7.5 和 Runtime v4.0 集成模式应用程序池上运行),我正在加密数据,将其放在 QueryString 上并使用System.Security.Cryptography.SymmetricAlgorithm类解密数据。但是我偶尔会在解密数据时遇到一些问题,我得到以下异常;

不良数据。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Security.Cryptography.CryptographicException:错误数据。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[加密异常:错误数据。]
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +33
System.Security.Cryptography.Utils._DecryptData(SafeKeyHandle hKey, Byte[] data, Int32 ib, Int32 cb, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode PaddingMode, Boolean fDone) +0
System.Security.Cryptography.CryptoAPITransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +313
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +33 Cryptography35.SymmetricEncryptionUtility.DecryptData(Byte[] data, String keyFile) 在 E:\Documents\@Library\Cryptography35\Cryptography35\SymmetricEncryptionUtility.cs:124 Cryptography35.SymmetricQueryString.SymmetriclyEncryptedQueryString ..ctor(String encryptedData, String keyfilename, String algorithmname) 在 E:\Documents\@Library\Cryptography35\Cryptography35\SymmetricQueryString\SymmetriclyEncryptedQueryString.cs:67 WebForms.Web.Views.purchase_a.GetSymmetriclyEncryptedQueryString() 在 E:\Documents\ WebForms.Web\Views\purchase-a.aspx.cs:35 WebForms.Web.Views.purchase_a.Page_Load(Object sender, EventArgs e) 在 E:\Documents\WebForms.Web\Views\purchase-a.aspx.cs :56 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,对象 o,对象 t,EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207 版本信息:微软.NET 框架版本:4.0.30319;ASP.NET 版本:4.0.30319.1

正如我所指出的,我有时会收到此错误,而不是每次运行时都会收到此错误。我不知道我在哪里做错了(在加密阶段或解密阶段)这是我用来做的代码;

SymmetriclyEncryptedQueryString班级

SymmetricEncryptionUtility班级

更新 我想出了别的东西。在我的一个页面上,我正在做以下事情;

我认为它会导致问题。(请记住,我的加密数据位于查询字符串中)当我尝试访问该页面时http,它会将其重定向到https并繁荣。它给了我那个错误。好的,现在我找到了错误的根源,但无论如何都不应该发生。

0 投票
2 回答
10042 浏览

java - java.security.InvalidKeyException:密钥长度不是 128/192/256 位

我是 Java 新手,正在尝试使用 AES-128 对称加密,然后在生成的对称密钥上使用 RSA-1024 非对称加密的混合加密。有人可以帮助我为什么得到这个例外。我已经关注了其他帖子,并在相应文件夹中下载了 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 版本 6。

我得到的例外

0 投票
2 回答
6257 浏览

c# - 解码和编码字符串 - 对称算法的硬编码密钥

我编写了以下用于编码和解码字符串数据的类(一键对称算法):

和用法如下:

我对 MyKey 有一些问题 ->我们如何为对称算法提供硬编码密钥并在上层类中使用它?

上面的代码错误如下:


执行当前的 Web 请求。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

System.Security.Cryptography.CryptographicException:指定的密钥不是此算法的有效大小。

我该如何解决这个错误?

提前致谢

0 投票
4 回答
73603 浏览

php - PHP 中的 AES-256 加密

我需要一个 PHP 函数,AES256_encode($dataToEcrypt)将其加密$data为 AES-256,而另一个AES256_decode($encryptedData)则相反。有谁知道这个函数应该有什么代码?

0 投票
1 回答
590 浏览

ssl - SSL + 附加加密层

我想知道如果客户要求在 SSL 之上进行第二层加密,该怎么办?

例如,我有一个 SSL 隧道,客户希望我对流经该隧道的数据使用对称密钥加密。对称密钥是基于会话的,并通过原始 SSL 隧道从服务器发送到客户端。

我没有看到这如何更安全。如果 SSL 隧道遭到破坏,那么理论上,从服务器发送的用于在会话期间进行对称加密的对称密钥也会受到破坏。

任何人都可以就这种情况提供任何不同的观点吗?我敢肯定,如果事先建立了一个共享机密(例如一次性密码),这将使事情变得更加安全,但是由于机密是通过 SSL 跨会话传递的,所以我看不到它是如何给我们带来额外的安全感的。

你有什么想法,你有过类似的经历吗?

谢谢