标签: sha256

如何在 swift 中将 SHA256 与盐(某些键)一起使用

我发现我们可以用 CommonCrypto 哈希一些字符串。我看到了一些例子,但他们不使用盐。如何将 SHA256 与盐一起使用?

sha256 commoncrypto swift

4
推荐指数
1
解决办法
5500
查看次数

使用 OpenSSL 1.1 的 SHA256 HMAC 未编译

下面的代码使用 HMAC SHA256 生成签名哈希。此代码在 Debian Jessie 和 Ubuntu 16.04(OpenSSL 1.0.2g 2016 年 3 月 1 日)上编译并运行良好。

\n\n
#include <openssl/evp.h>\n#include <openssl/hmac.h>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <sstream>\n\nusing namespace std;\n\nstring HMAC256(string data, string key)\n{\n        stringstream ss;\n        HMAC_CTX ctx;\n        unsigned int  len;\n        unsigned char out[EVP_MAX_MD_SIZE];\n        HMAC_Init(&ctx, key.c_str(), key.length(), EVP_sha256());\n        HMAC_Update(&ctx, (unsigned char*)data.c_str(), data.length());\n        HMAC_Final(&ctx, out, &len);\n        HMAC_cleanup(&ctx); \n        for (unsigned int i = 0;  i < len;  i++)\n        {\n          ss << setw(2) << setfill(\'0\') << hex << static_cast<int> (out[i]);\n        }\n        return ss.str();\n}\n\nint main()\n{\n    cout << …
Run Code Online (Sandbox Code Playgroud)

c++ debian openssl sha256 hmac

4
推荐指数
1
解决办法
5740
查看次数

为什么 hashlib 比 sha256 的其他代码更快?如何让我的代码接近 hashlib 性能?

下面的代码hashlib.sha256()与我sha256_test()用原始 python 编写的函数在哈希率性能方面进行了比较。

\n\n
from time import time_ns as time\nimport hashlib\n\ndef pad512(bytes_):\n    L       = len(bytes_)*8\n    K       = 512 - ((L + 1) % 512)\n    padding = (1 << K) | L\n    return bytes_ + padding.to_bytes((K + 1)//8, \'big\')\n\ndef mpars (M):\n    chunks = []\n    while M:\n        chunks.append(M[:64])\n        M = M[64:]\n    return chunks\n\ndef sha256_transform(H, Kt, W):\n    a, b, c, d, e, f, g, h = H\n    # Step 1: Looping\n    for t in range(0, 64):\n        T1 = h …
Run Code Online (Sandbox Code Playgroud)

python hash sha256 hashlib python-3.x

4
推荐指数
1
解决办法
5374
查看次数

从 macOS 中的“shasum”获取没有文件名的 SHA256 文件哈希值

在 macOS (Mojave) 上,“shasum”命令不是有一个选项,它只返回没有文件名的哈希值吗?

$ shasum -a 256 archive.tar.gz
35fe34e225a06d......00e72ee61a437b7226f9f   archive.tar.gz
Run Code Online (Sandbox Code Playgroud)

我当前在 macOS 的默认状态下工作的解决方法(无需额外安装):

$ shasum -a 256 archive.tar.gz | awk '{ print $1 }'
35fe34e225a06d......00e72ee61a437b7226f9f
Run Code Online (Sandbox Code Playgroud)
$ php -r "echo hash_file('sha256', 'archive.tar.gz'), PHP_EOL;"
35fe34e225a06d......00e72ee61a437b7226f9f
Run Code Online (Sandbox Code Playgroud)

但是,如果有一个命令选项,我想让它更简单。

是否有任何命令选项或者我是否必须为变通方法创建别名?

macos bash hash sha256

4
推荐指数
1
解决办法
1415
查看次数

使用西班牙语单词时,SHA256 在 C# 和 SQL Server 之间不会产生相同的结果

我正在使用 SHA256 来获取散列的十六进制字符串。使用常规字符时它工作得很好,但是当要散列的字符串包含重音符号/变音符号时,我在 C# 和 T-SQL 中会得到不同的结果。我更愿意在 SQL Server 端进行更改。

\n\n
    \n
  • 匹配的示例单词:bird
  • \n
  • 不匹配的示例单词:MU\xc3\x91OZ
  • \n
\n\n

C#

\n\n
using (SHA256 sha2 = SHA256.Create())  \n{\n    var hash = sha2.ComputeHash(Encoding.UTF8.GetBytes(fullAddress));\n    string hexString = string.Empty;\n\n    for (int i = 0; i < hash.Length; i++)\n    {\n        hexString += hash[i].ToString("X2"); //Convert the byte to Hexadecimal representation, Notice that we use "X2" instead of "X"\n    }\n\n    sha2.Dispose();\n    return hexString;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

SQL

\n\n
declare @fullAddress nvarchar(500)\nset @fullAddress = \'MU\xc3\x91OZ\'\nselect CONVERT([varchar](256), HASHBYTES(\'SHA2_256\', @fullAddress), 2) \n
Run Code Online (Sandbox Code Playgroud)\n

c# sql-server sha256 hashbytes

4
推荐指数
1
解决办法
3466
查看次数

在 JavaScript 中计算 HMAC_SHA256?

我想使用 JavaScript为某些keymessage前端计算基于 SHA256 的 HMAC 。在 Python 中很容易完成,如下所示:

import hmac
h = hmac.new(b'key', b'message', 'sha256')
print(h.hexdigest())
Run Code Online (Sandbox Code Playgroud)

我在 NodeJS 中搜索并找到了一些东西,但不能在前端做同样的事情(我的意思是在用户的浏览器中),我想我需要捆绑所需的库并做这些事情,但不知道如何做。

javascript hash frontend sha256 hmac

4
推荐指数
1
解决办法
1848
查看次数

使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 在 Java 中加密,使用 OAEPSHA256 Padding 在 C# 中解密

我遇到过 Java 程序使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 加密文本的情况。

我需要在 C# 中解密它。

Java 中的加密和解密工作正常。

使用 RSA/ECB/OAEPWithSHA-1AndMGF1Padding 在 Java 中加密并在 C# 中解密工作得非常好。

但是,使用 Java 中的 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 加密和 C# 中的 OaepSHA256 解密会出现错误:参数不正确。

用于加密的Java代码:

public static String encrypt(KeyPair keypair, String data) throws NoSuchAlgorithmException, NoSuchPaddingException,
            InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
        Cipher c = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        //Cipher c = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
        c.init(Cipher.ENCRYPT_MODE, keypair.getPublic());
        return Base64.getEncoder().encodeToString(c.doFinal(data.getBytes()));
    }
Run Code Online (Sandbox Code Playgroud)

解密的C#代码:

public string DecryptRsa(byte[] encryptedBytes, X509Certificate2 x509Certificate2, RSAEncryptionPadding rSAEncryptionPadding)
        {
            var text = string.Empty;

            using (RSACng csp = (RSACng)x509Certificate2.GetRSAPrivateKey())
            {

                byte[] bytesDecrypted = csp.Decrypt(encryptedBytes, rSAEncryptionPadding); …
Run Code Online (Sandbox Code Playgroud)

c# encryption sha256

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

如何在 Javascript 中创建 Base64 编码 SHA256 字符串?

我想记录脚本哈希值以实施内容安全策略。我已经能够使用以下代码在 python 中生成哈希值:

import hashlib
import base64

string='''
//<![CDATA[
var theForm = document.forms['ctl00'];
if (!theForm) {
    theForm = document.ctl00;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
'''
# encode as UTF-8
string_UTF8 = string.encode('utf-8')

# hash the message
hash_string = hashlib.sha256(string_UTF8).digest()

# base64 encode
result = base64.b64encode(hash_string)

print('sha256-' + result.decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

我怎样才能用 JavaScript 做到这一点?

javascript python base64 sha256 content-security-policy

4
推荐指数
1
解决办法
3904
查看次数

如何对 SHA256 十六进制字符串进行 Base64 编码

您好,我需要帮助来获取 Base64 编码列,我得到的是 sha256 哈希列,我想获取 44 个字符,但是当我在 python 中尝试此操作时

[base64.b64encode(x.encode('utf-8')).decode() for x in xxx['yyy']]

它返回 88 个字符,有人可以帮忙吗?基本上我想用Python实现下图所示的步骤,谢谢! 在此输入图像描述

在此输入图像描述

在此输入图像描述

python base64 encode sha256

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

Windows CryptoAPI:带有CALG_SHA_256的CryptSignHash和来自MY keystore的私钥

我试图在Windows上生成数字签名(来自XP SP3,但目前正在使用Windows 7进行测试),其中CryptoAPI将与以下openssl命令兼容:

openssl dgst -sha256 -sign <parameters> (for signing)
openssl dgst -sha256 -verify <parameters> (for validation)
Run Code Online (Sandbox Code Playgroud)

我想使用Windows"MY"密钥库中的私钥进行签名.

我设法使用SHA1摘要算法使用以下CryptoAPI函数签署文件(为简洁省略参数):

CertOpenStore
CertFindCertificateInStore
CryptAcquireCertificatePrivateKey
CryptCreateHash (with CALG_SHA1)
CryptHashData
CryptSignHash
Run Code Online (Sandbox Code Playgroud)

生成的签名与"openssl dgst -sha1 -verify"兼容(一旦字节顺序颠倒).

我的问题是:当我尝试将CALG_SHA_256与CryptCreateHash一起使用时,它会因错误80090008(NTE_BAD_ALGID)而失败.通过谷歌搜索左右,我发现,我需要使用特定的提供者(PROV_RSA_AES),而不是默认的一个.由于我有一个提供者句柄,我还需要用CryptGetUserKey替换CryptAcquireCertificatePrivateKey.所以我修改了我的程序,看起来像:

CryptAcquireContext (with PROV_RSA_AES)
CertOpenStore
CertFindCertificateInStore
CryptGetUserKey
CryptCreateHash (with CALG_SHA256)
CryptHashData
CryptSignHash
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没有按预期工作:CryptGetUserKey失败,错误8009000D(NTE_NO_KEY).如果我删除了CryptGetUserKey调用,程序将一直运行,直到CryptSignHash失败,错误80090016(NTE_BAD_KEYSET).我知道密钥集确实存在并且工作正常,因为我能够使用它来签署SHA1摘要.

我尝试使用从CertFindCertificateInStore获得的证书上下文中的信息再次获取上下文:我能做的最好的是成功的CryptGetUserKey调用,但CryptSignHash总是会失败并出现相同的错误.

我试图使用的私钥是2048位长,但我不认为它是一个问题,因为它与SHA1摘要一起使用.我很茫然,所以任何建议都会非常受欢迎!

cryptography rsa sha256 cryptoapi digital-signature

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