标签: sha256

如何在 javascript 中对文件(二进制文件,例如图像)使用 Sha256?

我正在尝试用 Javascript 对文件进行 Sha256 处理。我使用FileReader(HTML5)读取文件。我使用 FileReader 中的 readAsBinaryString 函数来传入图像文件。然后,在 FileReader.onload 函数中,我将 evt.target.result 传递给CryptoJs API中的 SHA256 方法。我能够成功获取哈希值,但它不正确。当我传入文本文件时,它工作正常,但图像文件不行。

代码(应该能够将下面的代码复制到 HTML 文件并在 Firefox 上运行 - 按“整个文件”按钮):

<style>
  #byte_content {
    margin: 5px 0;
    max-height: 100px;
    overflow-y: auto;
    overflow-x: hidden;
  }
  #byte_range { margin-top: 5px; }
</style>

<input type="file" id="files" name="file" /> Read bytes: 
<span class="readBytesButtons">
  <button data-startbyte="0" data-endbyte="4">1-5</button>
  <button data-startbyte="5" data-endbyte="14">6-15</button>
  <button data-startbyte="6" data-endbyte="7">7-8</button>
  <button>entire file</button>
</span>
<div id="byte_range"></div><BR>
<div id="byte_content"></div><BR>
<div id="crypto_sha256"></div>

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script>

  var sha256; …
Run Code Online (Sandbox Code Playgroud)

javascript binary sha256 filereader cryptojs

5
推荐指数
1
解决办法
1万
查看次数

使用 UUID 为特定字符串生成唯一标识符是否安全(就唯一性而言)?

String myText;
UUID.nameUUIDFromBytes((myText).getBytes()).toString();
Run Code Online (Sandbox Code Playgroud)

我使用上面的代码来生成特定文本的代表。例如,“Moien”应始终用“e9cad067-56f3-3ea9-98d2-26e25778c48f”表示,项目重建等任何更改都不应更改该 UUID。

我这样做的原因是我不希望这些特定的文本对人类来说是可读的(可理解的)。

注意:我不需要在散列后重新生成主要文本(例如“Moien”)的能力。

我也有一个替代方法:

            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] hash = digest.digest((matcher.group(1)).getBytes("UTF-8"));
            String a = Base64.encode(hash);
Run Code Online (Sandbox Code Playgroud)

您认为哪一个更适合我的问题?

java hash uuid sha256

5
推荐指数
1
解决办法
4214
查看次数

CryptoJS SHA256 大文件渐进式校验和

我正在尝试使用 CryptoJS 获取大文件(大于 500MB)的校验和,以便浏览器不会崩溃。我已经在使用带有分块功能的 Web Worker。因此,当我迭代块以更新 CryptoJS 以开始创建校验和时,我尝试逐步使用每个块。然而,当我最终确定时,它仍然返回错误的校验和。看起来它只返回最后一个块的校验和,而不是所有块的校验和。你能让我知道我做错了什么吗?

另外,我不必使用 CryptoJS,因为我发现它很慢,但它似乎是唯一可以处理渐进式加密的库。

 var sha256 = CryptoJS.algo.SHA256.create(),
     sha256Update,
     checksum = [],
     chunker = function(workerData) {                            

       var file = workerData.fileBlob,
           totalFileSize = file.size,
           chunkLength = 3145728,
           start = 0,
           stop = chunkLength,
           i = 0, readSlicer,
           fileSlicer,
           chunk,
           chunkUint8,
           timerCounter = 0,
           hashConvert;

      var checker = function() {

          start = stop;
          stop += chunkLength;

          if(start >= totalFileSize) {
               console.log("Done reading file!", stop, totalFileSize);
               sha256Update.finalize();

               console.log("CheckSum : ", sha256Update._hash.toString(CryptoJS.enc.Hex));
               return;
                               }
               readBlock(start, chunkLength, file);
      }; …
Run Code Online (Sandbox Code Playgroud)

javascript hash sha256 chunking cryptojs

5
推荐指数
1
解决办法
4137
查看次数

我可以将两个字符串哈希为一个哈希吗?

我对 Python 还很陌生,想要创建一些将两个字符串哈希在一起的代码。特别是对于我的情况,我想对文件的哈希值和比特币块哈希值进行哈希处理。下面的代码显然不起作用,因为 sha256() 仅接受一个参数。你们知道这件事吗?

谢谢,

from __future__ import print_function
import blocktrail, time, csv, hashlib, sys

client = blocktrail.APIClient(api_key="x", api_secret="x", network="BTC", testnet=False)
address = client.address('x')

latest_block = client.block_latest()
hash_list = []
h = latest_block['hash']
sha256 = hashlib.sha256()
BUF_SIZE = 65536
print("test")

with open('entries#x.csv', 'rb') as entriesfile:
    buf = entriesfile.read(BUF_SIZE)
    while len(buf) > 0:
        sha256.update(buf)
        buf = entriesfile.read(BUF_SIZE)
    print(sha256.hexdigest())

entryhash = sha256.hexdigest()

hashofhe = hashlib.sha256(b'entryhash', 'h')
Run Code Online (Sandbox Code Playgroud)

python hash sha256

5
推荐指数
2
解决办法
6539
查看次数

哈希算法SHA256,我的方法安全吗?如何添加盐值以使其更安全

我对密码学很陌生,想了解哈希算法。

我有以下来源来创建密码的哈希版本,该密码可以存储在我的数据库中。

    public static string hashPasswordGenerator(string password)
    {
        System.Security.Cryptography.SHA256Managed crypt = new System.Security.Cryptography.SHA256Managed();
        StringBuilder hash = new StringBuilder();
        byte[] cry = crypt.ComputeHash(Encoding.UTF8.GetBytes(password), 0, Encoding.UTF8.GetByteCount(password));
        return Convert.ToBase64String(cry);
    }
Run Code Online (Sandbox Code Playgroud)

我的示例用户User1使用密码Password1,这返回哈希版本GVE/3J2k+3KkoF62aRdUjTyQ/5TVQZ4fI2PuqJ3+4d0=

我的问题是:

  1. 这安全吗?
  2. 我应该加盐吗?如果是这样,有人可以给我看一个简单的例子,因为我真的不明白它是如何生成盐的,以便它每次都会匹配密码?
  3. 如果有人有这个 hashPasswordGenerator 方法,他们可以对我的密码进行逆向工程吗?

提前致谢。

c# security hash cryptography sha256

5
推荐指数
1
解决办法
2559
查看次数

如何在php中计算大文件的SHA256

我想用 PHP 计算大文件的 SHA256。目前,我正在使用 Amazon Glacier 来存储旧文件及其 API 来上传存档。最初,我只是使用无法达到 MB 大小图像的小文件。当我尝试上传超过 1MB 的文件时,API 响应说我给他们的校验和与他们计算的不同。

\n\n

这是我上传文件的代码:

\n\n
//get the sha256 using the file path\n$image = //image path;\n$sha256 = hash_file("sha256", $image);\n\n$archive = $glacier->uploadArchive([\n        \'accountId\' => \'\', \n        \'body\' => "",\n        \'checksum\' => $sha256,\n        \'contentSHA256\' => $sha256,\n        \'sourceFile\' => $image,\n        \'vaultName\' => \'my-vault\'\n    ]);\n
Run Code Online (Sandbox Code Playgroud)\n\n

和错误:

\n\n

AWS HTTP error: Client error: `POST https://glacier.us-west-2.amazonaws.com/vaults/70/archives` resulted in a `400 Bad Request` response:{"code":"InvalidParameterValueException","message":"Checksum mismatch: expected 9f1d4da29b6ec24abde48cb65cc32652ff589467 (truncated...)\n

\n\n

我尝试了如下函数来检查最终的哈希值,但当我打印它时,它似乎不是正确的哈希值:

\n\n
private function getFinalHash($file)\n{\n    $fp …
Run Code Online (Sandbox Code Playgroud)

php hash sha256

5
推荐指数
1
解决办法
5944
查看次数

如何在 python 中使用 RSA SHA-256 签署令牌?

我正在尝试用 python 对 JWT 进行编码,我需要用 base64 对其进行编码,我就是这么做的。然后我必须在发送到服务器之前用私钥对其进行签名。其实我被屏蔽了,什么时候签名我不知道怎么办,我从昨天开始就在网上搜索,我有点迷失了。这是我的代码。

import jwt

print ("\nStart..")

encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')

print("\nJWT : ",encoded)

try:
    decoded = jwt.decode(encoded, 'secret', algorithms=['HS256'])
except jwt.InvalidTokenError:
    print("Invalid token!!")

print("\ndecoded : ", decoded)

print("\nencodage : ")

#LOAD THE PRIVATE KEY


#SIGN THE ENCODED token
Run Code Online (Sandbox Code Playgroud)

还有我的密钥的格式,它是 RSA 私钥。

-----BEGIN RSA PRIVATE KEY-----
dsjkfhsdfkshkdfhks...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

我向服务器 crt.crt 提供了一个证书,我认为我需要用我的私钥进行加密,然后他们将能够使用证书中的密钥来解密消息,这就是我的理解。

预先感谢,G.B

python sha256 jwt private-key rsa-sha256

5
推荐指数
1
解决办法
1万
查看次数

系统.安全.加密.SHA256Cng .NET Core

我有一个 .net core 应用程序作为控制台,我正在尝试从 Azure Db 获取一些值。该代码在 .NET Framework(标准)上完美运行,我总是能获取数据,但我需要使用 .NET Core。简而言之,我有一种从另一个(.dll)获取配置的方法,每次遇到异常时:

例外

System.AggregateException: 'One or more errors occurred. (Could not load type 'System.Security.Cryptography.SHA256Cng' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.)'
Run Code Online (Sandbox Code Playgroud)

我知道.NET Core有System.Core,但它没有“SHA256Cng”,只有“SHA256”。也许我可以使用 .net Framework .dll 还是有其他方法来解决这个问题?附言。仅需要使用 .NET Core(.net 控制台应用程序和其他)。

方法

public ITenantConfigurationProvider CreateTenantConfigurationProvider(ITenantClient client, string tenantId)
        {
            return client.GetConfigAsync(tenantId).Result;
        }
Run Code Online (Sandbox Code Playgroud)

c# dll sha256 azure .net-core

5
推荐指数
1
解决办法
8654
查看次数

文件和该文件内容的 SHA256 生成不同

我使用在线 SHA256 转换器来计算给定文件的哈希值。在那里,我看到了我不明白的效果。

出于测试目的,我想计算一个非常简单的文件的哈希值。我将其命名为“test.txt”,其唯一内容是字符串“abc”,后面是一个新行(我刚刚按了 Enter)。

现在,当我将“abc”和换行符放入 SHA256 生成器时,我得到了哈希值

edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb

但是当我将完整的文件放入同一个生成器中时,我得到了哈希值

552bab6864c7a7b69a502ed1854b9245c0e1a30f008aaa0b281da62585fdb025

差异从何而来?我使用了这个生成器(事实上,我尝试了几个生成器,它们总是产生相同的结果):

https://emn178.github.io/online-tools/sha256_checksum.html

请注意,如果没有换行符,则不会出现这种差异。如果文件仅包含字符串“abc”,则哈希为

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

对于文件以及内容。

sha256

5
推荐指数
1
解决办法
2607
查看次数

如何使用 HMACSHA256 python 3 验证 Xero webhook 有效负载

根据此处的说明 ( https://developer.xero.com/documentation/webhooks/configuring-your-server ) 设置和验证 Xero webhook 的接收意图。

计算出的签名应与标头中的签名匹配,以获得正确签名的有效负载。

但是,使用 python 3,计算出的签名与标头中的签名根本不匹配。Xero 会向订阅 webhook url 发送大量请求,无论正确还是错误。在我的日志中,所有这些请求都返回为 401。因此,下面是我的测试代码,也被证明不匹配。我不知道缺少什么或者我做错了什么。不要担心这里显示的密钥,我已经生成了另一个密钥,但这是分配给我用于此时散列的密钥。根据他们的指示,运行此代码应该使签名与标头之一匹配。但根本不接近。

XERO_KEY = 
"lyXWmXrha5MqWWzMzuX8q7aREr/sCWyhN8qVgrW09OzaqJvzd1PYsDAmm7Au+oeR5AhlpHYalba81hrSTBeKAw=="

def create_sha256_signature(key, message):
    message = bytes(message, 'utf-8')
    return base64.b64encode(hmac.new(key.encode(), message, 
                 digestmod=hashlib.sha256).digest()).decode()

# first request header (possibly the incorrect one)
header = "onoTrUNvGHG6dnaBv+JBJxFod/Vp0m0Dd/B6atdoKpM="

# second request header (possibly the correct one)
header = "onoTrUNvGHG6dnaBv+JBJxFodKVp0m0Dd/B6atdoKpM="
payload = {
    'events':[],
    'firstEventSequence':0,
    'lastEventSequence':0,
    'entropy':
    'YSXCMKAQBJOEMGUZEPFZ'
}
payload = json.dumps(payload, separators=(",", ":")).strip()
signature = create_sha256_signature(XERO_KEY, str(payload))
if hmac.compare_digest(header, signature):
     print(True)
     return 200
else:
     print(False)
     return …
Run Code Online (Sandbox Code Playgroud)

sha256 hmac webhooks xero-api python-3.7

5
推荐指数
1
解决办法
1139
查看次数