问题标签 [dsa]
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.
python - M2Crypto:验证 DSA 签名
我在使用 Python/M2Crypto 验证 DSA 签名时遇到问题。签名使用标准 java.security.Signature 类在 Java 中生成,并带有 Sun 的加密提供程序和 SHA1withDSA 算法名称。
这是一些shell输出:
签名值对我来说似乎没问题,它看起来像是两个整数的正确 ASN.1 编码序列(0x302c 表示 44 字节序列,0x0214 表示 20 字节整数),这是 DSA 签名的标准编码。
由于 DSA_pub.verify_asn1 方法甚至没有记录,我也尝试使用记录的 DSA_pub.verify 方法,但仍然没有雪茄:
文档声明所有参数都应该是“字节字符串”,但是验证方法以某种方式设法引发编码错误。我还尝试反转 r 和 s,以检查潜在的字节顺序问题,但这并没有帮助。
我究竟做错了什么?
language-agnostic - 如何为服务器身份验证编写私钥/公钥系统?
我想这可能已经发布在某个地方,我确实搜索过,但找不到任何东西。
我有一个运行游戏服务器的服务器,我希望有一些 TCP 服务器(可能用 Ruby 编写),它将提供一个伪会话,可用的命令很少(比如重新启动游戏服务器、发送日志等) .)
我想要的是一种类似 SSH 的身份验证,人们拥有公共和私人 DSA 密钥(我知道如何生成),并且公共密钥被服务器识别为正确的身份验证。
我不是在寻找代码实现,而是主要应该如何构建它。
我的想法是这样的:
[Client]
连接到服务器[Server]
发送公钥[Client]
发送使用服务器公钥编码的公钥[Server]
将密钥与授权客户数据库进行比较[Server]
生成会话密钥,使用客户端 pub 加密发送[Client]
解码会话密钥并开始发送始终伴随会话密钥的消息
但我觉得这缺少了一些东西。特别是,在查看 DSA 和 PK 系统时,我不断看到消息签名,但我不确定我是否理解它与使用 pub 密钥加密和会话密钥有什么不同?
如果我的问题不清楚,我当然很乐意编辑我的帖子:-)。
java - Java SHA1withDSA 到 PHP,可转换?
用 PHP 实现 SHA1withDSA 签名是否成功?此处报告失败。
security - DSA:黑客可以用 *just* 公钥做什么?
我目前正在开发的共享软件注册系统将公共 DSA 密钥嵌入到可执行文件本身中,而私钥驻留在服务器上。(为了讨论,我们假设服务器是 100% 安全的,任何人都无法获得私钥。)
每当购买程序时,服务器都会通过使用私钥签署用户名来为用户生成许可证。然后将该许可证通过电子邮件发送给用户。一旦用户手动将他们的姓名和许可证输入到共享软件应用程序中,应用程序中嵌入的公钥就会验证它是有效还是无效的许可证。
但是,对于具有正确“专业知识”的坚定的人来说,反汇编可执行文件并检索公钥将是相当微不足道的。
我的问题是,他们能用它做什么?公钥本身是完全无害的吗?公钥是否足以对密钥生成器进行逆向工程?
好奇的人想知道。提前致谢!
java - Java中的模幂运算
我需要一种计算方法:
在爪哇。
我找到了计算 (g^u) mod p 的算法:
它工作得很好,但我似乎无法找到一种方法来做到这一点
因为我的数学能力很差。
把它放在上下文中,它是用于“简化” DSA 的 java 实现 - 验证部分需要解决这个问题。
authentication - 在两个不同的帐户上使用相同的公共 ssh 密钥
情况是这样的:我家有一台机器(我们称之为house_machine),我的办公室有另一台机器(称之为office_machine)。我使用 ssh 和 dsa 密钥身份验证并且没有密码身份验证从 office_machine 访问 home_machine。我已经在 home_machine 上设置了一个 ssh 服务器,并将在 office_machine 上生成的公钥添加到 home_machine 上的 authorized_keys 文件中。这很好用——我可以从office_machine ssh 到home_machine,只需使用密钥而无需密码。
现在的问题是:当我访问其他办公室时,我希望能够通过使用属于 office_machine 的公钥访问 home_machine。即,我想将公钥 (id_dsa.pub) 放在 USB 驱动器上,然后将其复制到另一个办公室的 .ssh 目录中。从我在这个网站上读到的内容来看,其他人似乎已经能够做这种事情,但是它不起作用。当我尝试简单地将 id_dsa.pub 放在新机器上并执行ssh -v user@home_machine
调试消息时,以:
我的临时解决方案是在 home_machine 上的 sshd_config 中设置“PasswordAuthentication yes”,然后使用密码进入 home_machine。但是,这使使用密钥授权的意义无效。
提前致谢!
c# - 一位用户无法从 xml 字符串导入 DSA 密钥。权限?安装损坏?糟糕的KSP?
一位用户最近在使用我的软件时报告了一个奇怪的错误。我使用 DSA 签名来验证许可证。当软件导入公钥以验证签名时,DSA 提供程序的FromXmlString方法会引发CryptographicException,其描述为“密钥在指定状态下无效。 ”
从 System.Security.Cryptography.Utils.CreateProvHandle 调用的 _OpenCSP 方法似乎返回 NTE_BAD_KEY_STATE (0x8009000b)。这是第一次有人向我报告此错误,并且该代码已多年未更改。
造成这种情况的可能原因是什么?屏蔽权限错误?损坏的 CAPI 安装?被.net 信任/权限设置阻止?由密钥存储提供程序存储的垃圾,还是 KSP 向 cryptoapi 返回意外的东西?
我已经用谷歌搜索了错误代码/描述/等,但没有找到任何可能导致这种情况的真正答案......
失败的代码的隔离版本在这里:http: //forum.huagati.com/getattachment.ashx?fileid=78
...并在受影响用户的机器上返回:
更新:在同一台机器上的 .net fx 2.0 下运行时,相同的代码工作正常,但在 .net fx 4.0 下失败。
更新 2: DSA 提供程序似乎会查找存储在 %APPDATA%\Microsoft\Crypto\DSS\[SID] 下的密钥,即使使用现有密钥进行初始化也是如此。会不会和这个机制有冲突?任何人都知道更多关于密钥存储是如何运作的,以及为什么从字符串加载公钥时它会被命中?
.net - 如何从私钥创建签名?- 动态搜索广告
我正在尝试从我提供的私钥和散列值创建签名。我正在使用 DSA 和以下代码,但收到以下错误:
指定的类型无效。源 mscorlib
此行引发错误:ImportCspBlob(pk)
谁能告诉我我是在正确的路线上还是我出路了?
对此的任何帮助将不胜感激。
python - DSA 验证计算
我错过了什么吗?来自FIPS180-2的第 25 页,它给出了 u1、u2、g^u1 mod p、y^u2 mod p 和 v 的值。我已经计算了除 v 之外的所有值。但是,当我进行数学运算时,我的计算拒绝为 v = 0x8bac1ab66410435cb7181f95b16ab97c92b341c0。相反,我从以前得到 v = 0xc5a54698ae8e5b94661134260594ff4e3f488e26,它不等于 r。我正在(pow(g, u1, p) * pow(y, u2, p)) % q
做计算,pow
内置函数在哪里,而不是数学模块函数
unix - 您如何将身份文件与 rsync 一起使用?
您如何将身份文件与 rsync 一起使用?
这是我认为我应该与 rsync 一起使用以使用身份文件进行连接的语法:
但这给了我一个错误:
该文件很好,权限设置正确,它在执行 ssh 时有效 - 只是不适用于 rsync - 至少在我的语法中。我究竟做错了什么?它是否试图在远程机器上查找身份文件?如果是这样,我如何指定我想在本地机器上使用身份文件?