标签: sha256

使用java访问MS CryptoAPI

我试图充分利用MS CAPI,并且陷入了一个巨大的恶作剧......只有SunMSCapi提供商,嗯,提供,至少在签名方面缺少更好的词,以下算法:

  • MD2withRSA
  • MD5withRSA
  • SHA1withRSA

而且我并不急于使用这样的算法GOST3411withECGOST3410,或者RIPEMD128withRSABouncyCastle 使用的算法,但它会很好,并且在这种特殊情况下,如果不是必要的话,至少能够登录SHA256withRSA算法是非常重要的. ..(512等等和ECDSA加密,将是一个很大的优势,但我不指望那么多).

我试图找到一个替代品,但只找到这个包装,看起来很好,但我不得不再挖一点.

有没有人知道另一种方式,包装或提供者访问mscapi(cryptoapi)?


有关:

java sha256 cryptoapi mscapi

8
推荐指数
1
解决办法
2876
查看次数

如何以编程方式计算Chrome扩展ID?

我正在构建一个自动化流程来生成扩展.是否有直接计算扩展ID的代码示例,并完全绕过与浏览器的交互?

(我在回答我自己的问题,下面.)

python google-chrome sha256 google-chrome-extension

8
推荐指数
2
解决办法
2778
查看次数

如何在 Windows 上使用 Git Bash 终端验证下载文件的 sha256 哈希值?

如何在 Windows 上使用 Git Bash 终端验证下载文件的 sha256 哈希值?例如PHP 版本

terminal hash sha256 git-bash

8
推荐指数
1
解决办法
4819
查看次数

SHA256的输出格式是什么

SHA256的输出格式是什么?它只由字母和数字组成?它不区分大小写?

sha sha256

7
推荐指数
1
解决办法
4846
查看次数

在PHP中编码Amazon Flexible Payments秘密字符串的问题

我正在尝试使用亚马逊支付服务,他们要求我做这样的事情:

这是完整的签名,所以你可以看到我添加了签名方法:

$string_to_sign = "GET\n
authorize.payments-sandbox.amazon.com\n
cobranded-ui/actions/start?
SignatureMethod=HmacSHA256&SignatureVersion=2&callerKey=my_key&callerReference=YourCallerReference&paymentReason=donation&pipelineName=SingleUse&returnUrl=http%3A%2F%2Fyourwebsite.com%2Freturn.html&transactionAmount=4.0";
Run Code Online (Sandbox Code Playgroud)

然后我加密它如下.

$encoded_string_to_sign = URLEncode(Base64_Encode(hash_hmac("sha256", $string_to_sign, 'my_secret_key')));
Run Code Online (Sandbox Code Playgroud)

我这样做,但后来我从他们那里得到一个错误说:

Caller Input Exception: The following input(s) are either invalid or absent:[signatureMethod]
Run Code Online (Sandbox Code Playgroud)

知道这里可能出了什么问题吗?

以下是整个代码:(变量分配上面的值)

<?php
$string_to_sign = 'GET
authorize.payments-sandbox.amazon.com/cobranded-ui/actions/startSignatureMethod=HmacSHA256&SignatureVersion=2&callerKey=AKIAJENBYSJCJX2IDWDQ&callerReference=YourCallerReference&paymentReason=donation&pipelineName=SingleUse&returnUrl=http%3A%2F%2Fproblemio.com&transactionAmount=4.0';

    $encoded_string_to_sign = URLEncode(Base64_Encode(hash_hmac("sha256", $string_to_sign, 'my_secret_key')));

$amazon_request_sandbox = 'https://authorize.payments-sandbox.amazon.com/cobranded-ui/actions/start?SignatureVersion=2&returnUrl='.$return_url.'&paymentReason='.$payment_reason.'&callerReference=YourCallerReference&callerKey='.$my_access_key_id.'&transactionAmount=4.0&pipelineName=SingleUse&SignatureMethod=HmacSHA256&Signature='.$encoded_string_to_sign;

//echo $amazon_request_sandbox; - use this if you want to see the resulting request and paste it into the browser

header('Location: '.$amazon_request_sandbox);
?>
Run Code Online (Sandbox Code Playgroud)

谢谢!!

php sha256 amazon-fps

7
推荐指数
2
解决办法
1319
查看次数

为什么 HMAC sha256 在 PHP 和 Javascript 上返回不同的值

我正在尝试使用 CryptoJS 在 Javascript 中构建一个 HMAC SHA256 字符串,我现有的代码是使用 Akamai 库用 PHP 编写的。

在某些情况下,与 PHP 相比,我得到了不同的结果,我无法理解为什么它会给我不同的结果

    /* 
       <php> Using native hash_hmac
       Generating key by concatenating char 
    */ 

      $signature1 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", chr(63));
      $signature2 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", chr(63) . chr(23));
      $signature3 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", chr(63) . chr(23) . chr(253));

    /*
       here is result from php
       signature1 : 3e086bb48ab9aafa85661f9ce1b7dac49befddf117ce2a42d93c92b6abe513ce ( matched: same as JavaScript)
       signature2 : 3667dd414a50f68f7ce083e540f27f68f7d0f18617b1fb1e4788bffeaeab59f6( matched: same as JavaScript)
       signature3 : dd5a20041661046fdee871c8b9e77b3190fbbf85937c098090a1d524719b6aa9 ( not matched: diff from JavaScript)
    */


    /* 
       <JavaScript> …
Run Code Online (Sandbox Code Playgroud)

javascript php sha256 hmac cryptojs

7
推荐指数
1
解决办法
3757
查看次数

使用 C++ 中的密钥生成 HMAC SHA256 哈希

我正在寻找一些函数或一种使用密钥在 C++ 中返回 HMAC SHA256 哈希的方法。我看过 Crypto++ 和 OpenSSL 的文档,但它不接受用于计算的额外密钥参数。有人可以通过提供一些信息、代码片段或链接来帮助我。

c++ sha256 hmac

7
推荐指数
3
解决办法
2万
查看次数

如何比较 NodeJS 中请求正文的 HMAC SHA256 签名

我正在尝试使用 Dropbox 的 API,我让它成功地通过 webhooks 向我发送警报,但现在我想在每次他们向我发送警报时验证签名。

从 dropbox 的文档中,他们写道:

“每个通知请求都将包含一个名为 X-Dropbox-Signature 的标头,其中包含请求正文的 HMAC-SHA256 签名,使用您的应用程序机密作为签名密钥。这可以让您的应用程序验证通知确实来自 Dropbox。”

因此,我成功捕获了该签名,并使用 NodeJS 内置的加密模块尝试使用 HMAC SHA256 创建自己的签名,然后将我的签名与 Dropbox 发送给我的签名进行比较。

这是我这样做的代码:

  var sign = req.get("X-Dropbox-Signature");
  console.log(sign);
  var hmac = crypto.createHmac(algorithm, secret);
  hmac.update(JSON.stringify(req.body));
  hash = hmac.digest('hex');
  console.log(hash);
Run Code Online (Sandbox Code Playgroud)

其中 algorithm 只是“sha256”,secret 是我从 Dropbox 应用程序页面获得的密钥。我必须使用 JSON.stringify(req.body) 因为 req.body 是一个对象,而 hmac.update 需要一个字符串。我想知道这是否是我的错误的来源?

我控制台记录了来自 dropbox 的签名,然后我控制台记录了我使用 hmac 创建的签名,但它是一个不同的签名。

对我可能做错的事情有什么建议吗?

sha256 dropbox hmac node.js dropbox-api

7
推荐指数
1
解决办法
6587
查看次数

如何生成校验和并在Javascript中转换为64位非常大的文件而不会溢出RAM?

问题:

  1. 如何正确生成校验和,这是独立的,一致的,独立于浏览器?另外,我想将SHA256/MD5校验和字符串转换为64位.

  2. 如何在没有大量RAM要求的情况下正确读取文件以生成校验和?即我们如何在不影响RAM的情况下处理1 GB文件

例如,是否可以在不将文件加载到内存的情况下读取文件?(见答案)

这个项目似乎很有希望,但也无法实现.


我的目的是在X MB的块中逐步/递增地生成校验和.这可能有助于避免一次使用太多RAM.
以下是代码,它没有按预期工作:

let SIZE_CHECKSUM = 10 * Math.pow(1024, 2); // 10 MB; But can be 1 MB too
async function GetChecksum (file: File):
Promise<string>
{
  let hashAlgorithm: CryptoJS.lib.IHasher<Object> = CryptoJS.algo.SHA256.create();
  let totalChunks: number = Math.ceil(file.size / SIZE_CHECKSUM);
  for (let chunkCount = 0, start = 0, end = 0; chunkCount < totalChunks; ++chunkCount)
  {
    end = Math.min(start + SIZE_CHECKSUM, file.size);
    let resultChunk: string = await (new Response(file.slice(start, end)).text());
    hashAlgorithm.update(resultChunk);
    start …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm checksum sha256 typescript

7
推荐指数
1
解决办法
606
查看次数

如何在 JS 中使用 SHA256 散列字符串?

描述

我希望在 Javascript 中使用 SHA256 在本地散列一个字符串。我一直在环顾四周,认为会有某种官方库或函数,但我发现的只是大量不同的项目,每个项目都有不同的脚本,而且我不太确定要信任的脚本(因为我不是专家,绝对没有资格评估它们)或如何实施它们。 编辑:我需要文本输出,而不是十六进制,对不起,如果我在发布原始问题时没有解释。

代码

这是我迄今为止尝试过的:

async function sha256(message) {
  // encode as UTF-8
  const msgBuffer = new TextEncoder('utf-8').encode(message);

  // hash the message
  const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);

  // convert ArrayBuffer to Array
  const hashArray = Array.from(new Uint8Array(hashBuffer));

  // convert bytes to hex string
  const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
  console.log(hashHex);
  return hashHex;
}
sha256(passwordInput); 
Run Code Online (Sandbox Code Playgroud)

控制台输出:

未捕获(承诺)类型错误:无法读取未定义的属性“摘要”

我是 javascript 新手,我愿意接受所有建议,所以是的。

更新

尽管您的大部分建议都有效,但对于那些希望使用 Web Crypto API 的人来说,答案就在第 5 行。我需要crypto.subtle.digest改为window.crypto.subtle.digest

javascript hash sha256

7
推荐指数
3
解决办法
2万
查看次数