问题标签 [hmacsha1]

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

java - HmacSHA1 的 Mac.getInstance() 需要很长时间才能执行

我最近在调用Mac.getInstance("HmacSHA1").
在此特定服务器上执行该单个调用最多可能需要 10 分钟,而在其他机器上它的执行是即时的。

通话期间 CPU 使用率也会飙升。

以下是有关服务器的一些详细信息:

  • 操作系统: CentOS 5.6 Final(内核 2.6.35.8-16、i686);
  • JVM: Sun的JDK 1.6.0_25(32bit);
  • CPU: Intel Core2 Duo CPU (E8400@3.00GHz);
  • 内存: 2GB 内存;
  • 专用物理服务器。

关于这里可能是什么问题的任何线索?

0 投票
1 回答
1466 浏览

java - HmacSHA1 使用相同的秘密在不同的系统上生成不同的签名

我有一个使用 HmacSHA1 签名/验证请求的球衣 oauth 提供程序。这适用于我的开发和测试平台,其中客户端和服务器都是不同的物理系统。但是,当我迁移到生产平台时,HmacSHA1 算法(提供者端)返回的值与使用相同参数和密钥的 HmacSHA1 算法(客户端)不同,并且我的 oauth 验证失败。

JDK (1.6.x) 在所有平台的提供者和客户端上都是完全相同的版本。

当我将我的 oauth 提供者和客户端切换为使用 PLAINTEXT 签名方法(我知道这对安全性不利)时,它适用于所有平台。

当我深入研究球衣 OAuthSignature.verify() 方法时,它会调用签名方法的(HmacSHA1 或 PLAINTEXT)验证函数,该函数只需使用密钥对 oauth 元素进行签名,并将值与传入的签名进行比较。

对于 HmacSHA1,该方法调用 Base64.encode() 方法来生成签名,但对于 PLAINTEXT,没有进行编码(如预期的那样)。

什么可能导致使用 HmacSHA1 签名算法的 Base64.encode() 方法在两个系统上使用相同的参数和密码产生不同的结果?

提前致谢!--TK

0 投票
1 回答
2058 浏览

java - 如何使用 java 生成 s3 样式的访问/密钥

我正在尝试使用 java 以与 S3 相同的方式生成访问密钥和密钥,但遇到了一些麻烦。

作为一个起点,我正在查看这个充气城堡示例,我已经启动并运行了这段代码,但我不确定两件事 1)如何设置它以使用与使用 HMAC-SHA1 的 s3 相同的密钥生成,如此所述2)如何为用户获取友好的公钥/私钥字符串。

您可能已经猜到我是 java 加密和充气城堡库的新手,但是我确实在 bc 文档中找到了 JCEKeyGenerator.HMACSHA1,但我无法找到它的使用示例。任何帮助将不胜感激。

谢谢。

0 投票
3 回答
10496 浏览

python - hmac-sha1 哈希是否总是 20 字节长?Python代码

摘要总是20字节长吗?len(hashed.digest()) 似乎总是 20。

0 投票
2 回答
541 浏览

iphone - iPhone中的base64 HmacSHA1解码

我正在开发一个需要使用算法进行Base64解码的 iPhone 应用程序。HmacSHA1谁能帮我做给定Java代码的objective-C等价物:


感谢 matthijz,但它与 HmacSHA1 无关。我正在寻找的解决方案与 Java 代码等效:

任何帮助表示赞赏。

0 投票
1 回答
438 浏览

c++ - HMACSHA1 关闭 2 个字节

我在 MSVC++ 2010 Express 中使用这个类:http: //www.codeproject.com/KB/recipes/HMACSHA1class.aspx。我正在运行 Vista 32 位。几乎让它工作我只是改变了......

SHA1.cpp:

因为如果没有此更改,它会说:“错误 C3861:'fopen':找不到标识符”。

我在 int main 中使用的代码是:

问题是我的摘要等于:0xb61731865557264e28bc0b6fb378c8ef146be0,它假设等于 0xb617318655057264e28bc0b6fb378c8ef146be00。有关此代码有什么问题以及如何使其正常工作的任何帮助都会有很大帮助...

或者也许有人可以为我指出正确的方向,以获得更好的 HMACSHA1 课程。Win32 的 CryptoAPI 既复杂又愚蠢。

0 投票
1 回答
1097 浏览

c++ - HMAC-SHA1 示例未返回所需的哈希?

我正在使用这个例子:http: //msdn.microsoft.com/en-us/library/aa382379%28VS.85%29.aspx

直接复制粘贴,并使用以下链接作为查看摘要的参考:http: //buchananweb.co.uk/security01.aspx

我对自己做错了什么感到困惑。此示例适用于 HMAC-SHA1,对吗?如果有人可以告诉我出了什么问题,或者可以指出我正确的方向,那将有很大帮助。

0 投票
1 回答
4806 浏览

c++ - MSDN HMAC-SHA1 示例不起作用

使用 CryptoAPI 创建 HMAC 步骤,在此处找到:http: //msdn.microsoft.com/en-us/library/Aa379863

  • 计算 HMAC

    1. 通过调用 CryptAcquireContext 获取指向 Microsoft 加密服务提供程序 (CSP) 的指针。
    2. 通过调用 CryptCreateHash 创建 HMAChash 对象的句柄。在 Algid 参数中传递 CALG_HMAC。在 hKey 参数中传递对称密钥的句柄。此对称密钥是用于计算 HMAC 的密钥。
    3. 通过调用 CryptSetHashParam 并将 dwParam 参数设置为值 HP_HMAC_INFO 来指定要使用的散列类型。pbData 参数必须指向一个初始化的 HMAC_INFO 结构。
    4. 调用 CryptHashData 开始计算数据的 HMAC。第一次调用 CryptHashData 会导致使用 XOR 运算符将键值与内部字符串和数据组合。对 XOR 运算的结果进行哈希处理,然后对 HMAC 的目标数据(由调用 CryptHashData 时传递的 pbData 参数指向)进行哈希处理。如有必要,随后可以调用 CryptHashData 以完成目标数据的散列。
    5. 调用 CryptGetHashParam 并将 dwParam 参数设置为 HP_HASHVAL。此调用导致内部散列完成,并使用 XOR 与键组合外部字符串。异或运算的结果被哈希,然后内部哈希的结果(在上一步中完成)被哈希。然后完成外部散列并在 pbData 参数中返回,长度在 dwDataLen 参数中返回。

我不能,因为我的生活让这个工作。我按顺序完成了所有步骤,但仍然无法运行我的程序。运行时出错:

任何人都可以帮忙吗?

0 投票
1 回答
1267 浏览

c++ - C++ OpenSSL HMACSHA1 可以工作,但不是我想要的

下面的这个 HMACSHA1 代码用于将“密码”和“消息”转换AFF791FA574D564C83F6456CC198CBD316949DC9http://buchananweb.co.uk/security01.aspx的证据。

我的问题是,是否有可能:

并且仍然得到相同的值:AFF791FA574D564C83F6456CC198CBD316949DC9.

例如,如果我在服务器上并收到数据包:

我从数据包中撕下50 61 73 73 77 6F 72 64&4D 65 73 73 61 67 65并将其用于我的 HMACSHA1。我将如何去做以获得正确的 HMACSHA1 值?

编辑:

它通过这样做来工作:

最后加上 0x00。但是,我的问题更多是从数据中提取它并使用它......它仍然可以吗?

0 投票
2 回答
842 浏览

smtp - OpenSSO 中的密码重置策略

我必须实施密码重置策略……为此,我将 OpenSSO 部署在 Glassfish 服务器上,并将 OpenDS 作为数据存储……我关注了 Indira 的博客……

使用 OpenDS 重置密码

并执行所有命令....由于我没有配置 SMTP,当我在回答问题后尝试重置特定用户的密码(注意:我已将 Gmail ID 指定为该用户的电子邮件地址)时,我得到确认说

“您的密码已重置,但我们无法将其发送给您。请联系您的管理员。”

如何在 OpenSSO 和 OpenDS 中配置 SMTP?