标签: sha256

匹配 Java SHA2 输出与 MySQL SHA2 输出

当我通过以下代码重现 SHA2 哈希时:

MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.digest("A".getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)

它给了我一个字节数组,即: 85,-102,-22,-48,-126,100,-43,121,93,57,9,113,-116,-35,5,-85,-44,-107,114, -24,79,-27,85,-112,-18,-13,26,-120,-96,-113,-33,-3

但是当我通过 MySQL 重现相同的哈希时,它给了我一个字符串:5cfe2cddbb9940fb4d8505e25ea77e763a0077693dbb01b1a6aa94f2

如何转换 Java 的结果以便与 MySQL 的结果进行比较?

java hash sha256 sha2

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

C# SHA256 散列与 Python 结果不同

我正在根据我找到的 Python 代码编写一个小程序。有几行我需要帮助。它是关于使用 SHA256 加密的值。

python代码如下:

first = hashlib.sha256((valueOne + valueTwo).encode()).hexdigest()
second = hashlib.sha256(str(timestamp) + value).encode()).hexdigest()
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我的值如下:

first: 93046e57a3c183186e9e24ebfda7ca04e7eb4d8119060a8a39b48014d4c5172b
second: bde1c946749f6716fde713d46363d90846a841ad56a4cf7eaccbb33aa1eb1b70
Run Code Online (Sandbox Code Playgroud)

我的 C# 代码是:

string first = sha256_hash((secret + auth_token));
string second = sha256_hash((timestamp.ToString() + secret));
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我的价值观是:

first: 9346e57a3c183186e9e24ebfda7ca4e7eb4d81196a8a39b48014d4c5172b   
second: bde1c946749f6716fde713d46363d9846a841ad56a4cf7eaccbb33aa1eb1b70
Run Code Online (Sandbox Code Playgroud)

如您所见,这些值略有不同。python 代码返回两个长度为 64 个字符的值,其中在 C# 中,值分别为 60 个字符和 63 个字符。

我的 sha256_hash 方法来自这里:获取字符串的 SHA-256 字符串

任何帮助将不胜感激,谢谢。

c# python encryption cryptography sha256

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

使用SHA256进行签名与使用RSA-SHA256进行签名之间的区别

我使用node.js 玩数字签名.出于测试目的,我创建了一些XML数据的数字签名,首先只使用SHA256,然后使用RSA-SHA256.

令我困惑的是,两种签名方法都创建了完全相同的签名.两个签名都是相同的.如果它们相同,那么为什么有两种不同的方法(SHA256与RSA-SHA256)?

我包括以下代码:

var crypto = require('crypto'),
    path   = require('path'),
    fs     = require('fs'),

    pkey_path = path.normalize('private_key.pem'),
    pkey = '';

function testSignature(pkey) {
    var sign1 = crypto.createSign('RSA-SHA256'),
        sign2 = crypto.createSign('SHA256');

    fs.ReadStream('some_document.xml')
        .on('data', function (d) {
            sign1.update(d);
            sign2.update(d);
        })
        .on('end', function () {
            var s1 = sign1.sign(pkey, "base64"),
                s2 = sign2.sign(pkey, "base64");

            console.log(s1);
            console.log(s2);
        });
}

// You need to read private key into a string and pass it to crypto module.
// If the key is …
Run Code Online (Sandbox Code Playgroud)

rsa sha256 digital-signature node.js

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

Golang - Dropbox webhook 签名验证 hmac

我正在编写一个需要使用 Dropbox 网络钩子的程序。我还没有找到任何已经到位的 Go 实现,所以我决定写我的。不幸的是,它似乎不起作用。

我认为这里的问题是hmac,因为我很可能做错了什么,但我似乎无法理解这里的问题到底在哪里。任何的想法?

以下是我所拥有的:

package dboxwebhook

import (
    "bytes"
    "crypto/hmac"
    "crypto/sha256"
    "errors"
    "io"
    "io/ioutil"
    "log"
)

type Signature struct {
    AppSecret []byte
    Signature []byte
}

func (w *Signature) Check(reqBody io.ReadCloser) error {

    if bytes.Compare(w.Signature, nil) == 0 {
        return errors.New("DropBox signature doesnt exist")
    }

    // building HMAC key (https://golang.org/pkg/crypto/hmac/)
    mac := hmac.New(sha256.New, w.AppSecret)
    requestBody, err := ioutil.ReadAll(reqBody)
    if err != nil {
        return err
    }

    mac.Write(requestBody)
    expectedMac := mac.Sum(nil)

    log.Println(w.AppSecret)
    log.Println(expectedMac)
    log.Println(w.Signature)

    // compare if …
Run Code Online (Sandbox Code Playgroud)

sha256 go hmac webhooks dropbox-api

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

比较c中的哈希值

我想比较和匹配哈希:

#include <stdio.h>
#include <string.h>
#include "sha256.h"

int main()
{
   unsigned char password[]={"abc"}, gen_hash[32];
   SHA256_CTX ctx;

   sha256_init(&ctx);
   sha256_update(&ctx,password,strlen(password));
   sha256_final(&ctx,gen_hash);

   unsigned char orig_hash[] = {"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"};

   if(strcmp(orig_hash, gen_hash) == 0)
   {
    printf("%s\n", "match");
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

但如果我比较两个哈希值,它们就不一样了.有谁碰巧知道为什么?我认为两个变量都是一样的,但它们不是吗?

c hash sha256

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

Ruby 中的 SHA256 Base64 哈希

我们正在尝试在 ruby​​ 中实现 SHA256 Base64 哈希,它没有像在 C# 中那样返回预期的结果。

下面是我们的 C# 示例代码。

    public static string HashSHA256ToBase64(string phrase)
    {
        if (phrase == null)
            return null;
        var encoder = new UTF8Encoding();
        var sha256Hasher = new SHA256CryptoServiceProvider();
        var hashedDataBytes = sha256Hasher.ComputeHash(encoder.GetBytes(phrase));

        return Convert.ToBase64String(hashedDataBytes);
    }
Run Code Online (Sandbox Code Playgroud)

为此,我们需要用 ruby​​ 编写等效的代码。为此,我们正在尝试如下。

Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), "", phrase))
Run Code Online (Sandbox Code Playgroud)

它提供的结果与 C# 不同。

测试短语:V2dcZBpzzglD1ynW5ZAyFocs9wtpR624wlla9gujw0I=RquZ/QzazPM=

预期结果:utXwt733s9FmiSM69o2zGOm0IT42FjthbB0oquIuPak=

有人可以用等效的 ruby​​ 代码帮助我解决这个问题吗

c# ruby cryptography sha sha256

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

sha256_crypt.encrypt 总是返回另一个哈希

我正在使用python和flask开发一个webapp。它有一个用户系统,当然还有一个注册表。我正在使用 passlib.hash.sha256 来加密想要注册的用户的密码。这是我在做什么:

from passlib.hash import sha256_crypt as sha256
[...]
if request.method == "POST" and form.validate():
    username = request.form['username']
    password = request.form['password']
    confirm_password = request.form['confirm_password'] 
    email = request.form['email']

    password = sha256.encrypt(password) #Encryption.



    c, conn = connection('accounts') #Connection to the database


    x = c.execute("SELECT * FROM accounts  WHERE username = '%s' OR email = '%s'" %(thwart(username), thwart(email)))

    if x:
        flash("We are very sorry, but this Username/Email-address is already taken. Please try again")
    else:
        c.execute('INSERT INTO accounts VALUES ("%s", "%s", "%s")' %(thwart(username), …
Run Code Online (Sandbox Code Playgroud)

python encryption sha256

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

在 dart 中使用 hmac 和 sha256 签署消息

我尝试在消息上使用 base64 解码的密钥生成 sha256 HMAC。我想使用飞镖语言。在 python 中,我可以使用以下代码来完成:

# PYTHON CODE
import hmac, hashlib, base64
...
message = 'blabla'
secret = 'DfeRt[...]=='
secret_b64 = base64.b64decode(secret)
signature = hmac.new(secret_b64, message, hashlib.sha256)
signature_b64 = signature.digest().encode('base64').rstrip('\n')
Run Code Online (Sandbox Code Playgroud)

这是我用飞镖尝试过的:

// DART CODE
import 'package:crypto/crypto.dart';
import 'dart:convert';
...
String message = 'blabla';
String secret = 'DfeRt[...]=='
var secret_b64 = BASE64.decode(secret);
var hmac = new Hmac(sha256, secret_b64);
// what now?
Run Code Online (Sandbox Code Playgroud)

但后来我不知道如何继续。我发现了一些旧的示例代码,如下所示

var message_byte = UTF8.encode(message);
hmac.add(message_byte);
Run Code Online (Sandbox Code Playgroud)

但是,Hmac 类中不再存在“add”方法。我也试过这个,但我不确定这是否正确

var message_byte = UTF8.encode(message);    
var signature = hmac.convert(message_byte);
var signature_b64 …
Run Code Online (Sandbox Code Playgroud)

base64 sha256 hmac dart

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

HMAC SHA256 Powershell 转换

为什么下面的powershell脚本:

$privateKey = "843c1f887b"
$requestData = "1543448572|d.lastname@firm.com|Firstname Lastname"
function signRequest {
    $hmacsha = New-Object System.Security.Cryptography.HMACSHA256
    $hmacsha.key = [Text.Encoding]::ASCII.GetBytes($privateKey)
    $signature = $hmacsha.ComputeHash([Text.Encoding]::ASCII.GetBytes($requestData))
    $signature = [Convert]::ToBase64String($signature)
    $outi = $signature
    return $signature
}
Run Code Online (Sandbox Code Playgroud)

转换为哈希:

FipK51tOtzb2m2yFQAf5IK6BNthClnqE24luMzYMPuo=
Run Code Online (Sandbox Code Playgroud)

和其他具有相同输入的在线 hmac sha256 生成器:

162a4ae75b4eb736f69b6c854007f920ae8136d842967a84db896e33360c3eea
Run Code Online (Sandbox Code Playgroud)

任何建议我在脚本中做错了什么?谢谢!

powershell sha256 hmac

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

Binance API HMAC SHA256 签名错误使用 C#

我尝试连接到Binance ApiUsing C#And RestSharplib。根据文件,我应该尝试这样的事情:

查询字符串:符号=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559

HMAC SHA256 签名:

[linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j" (stdin)= c8db56825ae71d6d71206000000000000000000000000000001c8db56825ae71d6d7920621bc8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c88c88c8888888

(HMAC SHA256) [linux]$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST https://api.binance.com/api.binance.order/api/quantity=YC&T&TyC&T=C&T&Q =0.1&recvWindow=5000×tamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

我尝试了很多方法和很多堆栈问题,但我找到了其他语言而不是 c# 的解决方案。这是我所做的基于:这个这个

public string GetAccountInfo()
    {
        long timeStamp = GetTimestamp();
        var request = new RestRequest("api/v3/account");
        request.AddHeader("X-MBX-APIKEY", ApiKey);
        request.AddParameter("timestamp", timeStamp, ParameterType.QueryString);
        request.AddParameter("recvWindow", RecvWindow, ParameterType.QueryString);
        request.AddParameter("signature", GetSignature(request.Parameters), ParameterType.QueryString);
        return Client.Get(request).Content;
    }
private long GetTimestamp()
    {
        return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
    }

    private string …
Run Code Online (Sandbox Code Playgroud)

c# sha256 binance

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