问题标签 [encryption]

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 投票
13 回答
15692 浏览

javascript - 无需 ssl 的双向密码加密

我正在使用 basic-auth twitter API(不再可用)将 twitter 与我博客的评论系统集成。这个和许多其他 Web API 的问题是它们需要用户的用户名和密码才能做任何有用的事情。我不想处理安装 SSL 证书的麻烦和成本,但我也不希望密码以明文形式通过网络传递。

我想我的一般问题是:如何通过不安全的渠道发送敏感数据?

这是我目前的解决方案,我想知道其中是否有任何漏洞:

  1. 在服务器上生成一个随机密钥(我使用的是 php)。
  2. 将密钥保存在会话中,并将密钥输出到 javascript 变量中。
  3. 在表单提交时,在 javascript 中使用 Triple DES和密钥来加密密码。
  4. 在服务器上,使用会话中的密钥解密密码,然后销毁会话。

最终结果是只有加密的密码通过线路发送,并且密钥只使用一次,并且从不与密码一起发送。问题解决了?

0 投票
5 回答
9431 浏览

security - 如何为多个收件人加密一封邮件?

使用两个密钥(可能是基于密码的)完成数据加密的基本原理是什么,但只需要两个密钥中的一个(任何一个)来解密数据?

例如,数据用用户的密码和他的公司密码加密,然后他或他的公司可以解密数据。他们都不知道另一个密码。仅存储一份加密数据的副本。

我不是指公钥/私钥。可能是通过对称密钥密码术,也许它涉及将密钥异或在一起以使用它们进行加密。

更新:我还想找到一个根本不涉及存储密钥的解决方案。

0 投票
5 回答
4253 浏览

encryption - 在 Web 应用程序中加密来自用户的数据

一些 Web 应用程序,如 Google Docs,存储用户生成的数据。只能由其所有者读取的数据。或者可能不是?

据我所知,这些数据按原样存储在远程数据库中。因此,如果在远程系统中拥有足够权限的任何人(例如系统管理员)可以潜伏我的数据,我的隐私可能会受到损害。

将这些数据加密存储在远程数据库中并且只有数据所有者才能解密它的最佳解决方案是什么?如何使这个过程对用户透明?(您不能使用用户的密码作为加密他的数据的密钥,因为您不应该知道他的密码)。

0 投票
10 回答
7668 浏览

.net - 是否有用于信用卡加密的最佳 .NET 算法?

.NETSystem.Security.Cryptography命名空间有一组相当令人困惑的算法,我可以使用这些算法来加密信用卡详细信息。哪个是最好的?

对于相对较短的字符串,它显然需要安全。

编辑:我在英国,我知道只要三位数的 CVV 号码从未被存储,我们就可以存储加密的信用卡详细信息。并感谢大家的好评。

0 投票
12 回答
36461 浏览

asp.net - 如何防止重放攻击?

这与我问的另一个问题有关。总而言之,我有一个 URL 的特殊情况,当一个表单被发布到它时,我不能依赖 cookie 进行身份验证或维护用户的会话,但我需要知道他们是谁,我需要知道他们已经登录了!

我想我想出了一个解决我的问题的方法,但它需要充实。这就是我的想法。我创建了一个名为“用户名”的隐藏表单字段,并在其中放置用户的用户名,加密。然后,当表单发布时,即使我没有从浏览器收到任何 cookie,我也知道他们已经登录,因为我可以解密隐藏的表单字段并获取用户名。

我能看到的主要安全漏洞是重放攻击。如何防止某人获取该加密字符串并以该用户身份发布?我知道我可以使用 SSL 使窃取该字符串变得更加困难,也许我可以定期轮换加密密钥以限制该字符串适用的时间量,但我真的很想找到一个防弹的解决方案。有人有什么想法吗?ASP.Net ViewState 是否阻止重播?如果是这样,他们是如何做到的?

编辑:我希望有一个不需要任何存储在数据库中的解决方案。应用程序状态是可以的,只是它无法在 IIS 重新启动或在网络场或花园场景中完全工作。我现在接受克里斯的回答,因为我不相信在没有数据库的情况下甚至可以保护它。但是如果有人提出不涉及数据库的答案,我会接受!

0 投票
5 回答
3352 浏览

flash - 将未经篡改的数据从 Flash 应用程序传递到服务器?

我正在寻找在运行 Flash 的客户端和服务器之间传递数据的安全方法。有问题的数据将由 Flash 应用程序生成,在这种情况下是您完成游戏后的分数。我想验证服务器上的数据是否未被篡改。有什么好的方法可以完成这项工作?

一种简单的方法是对数据执行一些操作,例如散列,然后将散列与数据一起传回服务器。但是,可以访问客户端源代码的人很容易打破这一点。

编辑:我意识到没有什么是不可破解的,但我想让它尽可能地困难。@jcnnghm 使用公钥加密数据并可选择使用游戏日志进行完整性检查和/或重新计算的解决方案是我认为的最佳选择。SSL 加密也是一个好主意,因为这使得破译实际发送回服务器的内容变得更加困难。

0 投票
2 回答
3764 浏览

.net - 如何在我的 .NET 应用程序中使用从 Win32 CryptoAPI 生成的密钥 blob?

我有一个用 C++ 为 Windows 编写的现有应用程序。此应用程序使用 Win32 CryptoAPI 生成 TripleDES 会话密钥,用于加密/解密数据。我们使用一个技巧的指数将会话密钥导出为 blob,这允许 blob 以解密格式存储在某处。

问题是我们如何在 .NET 应用程序 (C#) 中使用它。该框架封装/包装了 CryptoAPI 所做的大部分工作。部分问题是 CryptAPI 指出Microsoft 增强加密提供程序的 TripleDES 算法是 168 位(3 个 56 位的密钥)。但是,.NET 框架声明它们的密钥是 192 位(3 个 64 位的密钥)。显然,.NET 框架中的 3 个额外字节是为了奇偶校验?

无论如何,我们需要从 blob 中读取关键部分,并且能够以某种方式在我们的 .NET 应用程序中使用它。目前,当我们尝试在 .NET 中使用密钥时,我们没有得到预期的结果。解密失败得很惨。任何帮助将不胜感激。

更新:

我一直在想办法解决这个问题,并提出了一个我会及时发布的解决方案。但是,仍然会感谢其他人的任何反馈。

0 投票
3 回答
2680 浏览

c++ - 如何使用所有者密码但没有用户密码来解密 PDF?

尽管 Adob​​e 提供了PDF 规范,但它并不是最容易阅读的文档。PDF 允许对文档进行加密,因此需要用户密码和/或所有者密码才能对文档进行各种操作(显示、打印等)。一个常见的用途是锁定 PDF,以便最终用户可以在不输入任何密码的情况下阅读它,但执行其他任何操作都需要密码。

我正在尝试解析以这种方式锁定的 PDF(以获得与在任何阅读器中打开它们相同的权限)。使用空字符串作为用户密码不起作用,但似乎(规范的第 3.5.2 节)必须有一个用户密码才能为管理员密码创建哈希。

我想要的是如何做到这一点的解释,或者我可以阅读的任何代码(理想情况下是 Python、C 或 C++,但任何可读的都可以),这样我就可以理解我的意思正在做。最好是独立代码,而不是通读(例如)gsview 源代码。

0 投票
3 回答
968 浏览

sql-server - SQL Server“带加密”语句的用处

最近,我和一个朋友正在讨论如何保护 SQL Server 数据库中的存储过程代码。

从遥远的记忆中,我很确定“加密”在所有版本的 SQL Server 中都非常容易被破解,但是他说它在 SQL 2005 中得到了很大的改进。因此,我没有认真地将其视为安全选项在我曾经工作过的任何系统中。

那么在什么情况下可以使用“加密”,什么时候应该不惜一切代价避免呢?

0 投票
4 回答
35833 浏览

.net - 在 web.config 中加密 appSettings

我正在开发一个网络应用程序,它需要将用户名和密码存储在 web.Config 中,它还引用了一些将由网络应用程序本身而不是客户端请求的 URL。

我知道 .Net 框架不允许提供 web.config 文件,但我仍然认为将此类信息以纯文本形式保留是不好的做法。

到目前为止,我所阅读的所有内容都要求我使用命令行开关或将值存储在服务器的注册表中。由于主机在线并且我只有 FTP 和控制面板 (helm) 访问权限,因此我无法访问这些。

任何人都可以推荐我可以使用的任何好的、免费的加密 DLL 或方法吗?我宁愿不开发自己的!

感谢到目前为止的反馈,但我无法发出命令,也无法编辑注册表。它必须是一个加密工具/助手,但只是想知道哪个!