标签: sha256

C#SHA-256与Java SHA-256.结果不同?

我想将一些Java中的代码转换为C#.

Java代码:

  private static final byte[] SALT = "NJui8*&N823bVvy03^4N".getBytes();

  public static final String getSHA256Hash(String secret)
  {
    try {
      MessageDigest digest = MessageDigest.getInstance("SHA-256");
      digest.update(secret.getBytes());
      byte[] hash = digest.digest(SALT);
      StringBuffer hexString = new StringBuffer();
      for (int i = 0; i < hash.length; i++) {
        hexString.append(Integer.toHexString(0xFF & hash[i]));
      }
      return hexString.toString();
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } 
    throw new RuntimeException("SHA-256 realization algorithm not found in JDK!");
  }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用SimpleHash 类时,我得到了不同的哈希值

更新:

例如:

Java:byte [] hash = digest.digest(SALT); 生成(前6个字节):

[0] = 9
[1] …
Run Code Online (Sandbox Code Playgroud)

.net c# java cryptography sha256

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

去,中间状态SHA-256哈希

拥有128个字节的数据,例如:

00000001c570c4764aadb3f09895619f549000b8b51a789e7f58ea750000709700000000103ca064f8c76c390683f8203043e91466a7fcc40e6ebc428fbcc2d89b574a864db8345b1b00b5ac00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
Run Code Online (Sandbox Code Playgroud)

并且想要在其上执行SHA-256哈希,必须将它分成两个64字节的数据并在将结果一起散列之前单独散列它们.如果要经常更改数据后半部分的某些位,可以简化计算并仅将前半部分数据哈希一次.如何在Google Go中做到这一点?我试着打电话

func SingleSHA(b []byte)([]byte){
    var h hash.Hash = sha256.New()
    h.Write(b)
    return h.Sum()
}
Run Code Online (Sandbox Code Playgroud)

但不是正确的答案

e772fc6964e7b06d8f855a6166353e48b2562de4ad037abc889294cea8ed1070
Run Code Online (Sandbox Code Playgroud)

我有

12E84A43CBC7689AE9916A30E1AA0F3CA12146CBF886B60103AEC21A5CFAA268
Run Code Online (Sandbox Code Playgroud)

比特币论坛上讨论这个问题时,有人提到获得中间状态哈希可能存在一些问题.

如何计算Google Go中的中间状态SHA-256哈希值?

hash state sha sha256 go

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

在发送请求之前散列和编码变量

我正在尝试设置JMeter以连接到一个服务,该服务需要在开始之前和中间请求之前对某些变量进行一些散列.

我创建了一个用户定义的变量,它具有纯文本的身份验证信息.
在调用第一个HTTP请求之前,我需要使用SHA256散列密码,使用base64对其进行编码,然后转换为大写.

我将收到auth_token一个JSON格式化的响应机构.然后我需要对SHA256 -> base64 -> uppercaseauth_token 执行相同的链,从那时起它将在请求头中使用.

scripting base64 jmeter sha256

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

使用PInvoke的CryptoAPI的SignerTimeStampEx2

我正在尝试使用C#代码中的CryptoAPI将SHA256时间戳添加到已签名的程序集中.这是我正在使用的代码:

Signer.TimestampSignedAssembly("MyAssembly.exe", "http://tsa.starfieldtech.com");
Run Code Online (Sandbox Code Playgroud)

签名者类:

public static class Signer
{
    [StructLayoutAttribute(LayoutKind.Sequential)]
    struct SIGNER_SUBJECT_INFO
    {
        public uint cbSize;
        public IntPtr pdwIndex;
        public uint dwSubjectChoice;
        public SubjectChoiceUnion Union1;
        [StructLayoutAttribute(LayoutKind.Explicit)]
        internal struct SubjectChoiceUnion
        {
            [FieldOffsetAttribute(0)]
            public IntPtr pSignerFileInfo;
            [FieldOffsetAttribute(0)]
            public IntPtr pSignerBlobInfo;
        }
    }

    [StructLayoutAttribute(LayoutKind.Sequential)]
    struct SIGNER_FILE_INFO
    {
        public uint cbSize;
        public IntPtr pwszFileName;
        public IntPtr hFile;
    }

    [DllImport("Mssign32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    private static extern int SignerTimeStampEx2(
        uint dwFlags,               // DWORD
        IntPtr pSubjectInfo,        // SIGNER_SUBJECT_INFO
        string pwszHttpTimeStamp,   // LPCWSTR
        uint dwAlgId, …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke timestamp sha256 cryptoapi

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

可以将MD5转换为SHA256吗?

我有一个带有双MD5密码和盐的vBulletin数据库,是否可以在vBulletin数据库中获取密码,将它们转换为SHA256,然后将它们存储在新数据库中?有没有真正简单的方法来做到这一点?

我唯一的理由是阻止用户创建新帐户,并停止使用MD5.

php mysql database md5 sha256

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

PHP和Java中的SHA256

我正在将一些Java代码移植到PHP代码中.在Java中,我有一个哈希SHA256代码,如下所示:

public static String hashSHA256(String input)
        throws NoSuchAlgorithmException {
    MessageDigest mDigest = MessageDigest.getInstance("SHA-256");

byte[] shaByteArr = mDigest.digest(input.getBytes(Charset.forName("UTF-8")));
    StringBuilder hexStrBuilder = new StringBuilder();
    for (int i = 0; i < shaByteArr.length; i++) {
        hexStrBuilder.append(Integer.toHexString(0xFF & shaByteArr[i]));
    }

    return hexStrBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)

在PHP中,我哈希如下:

$hash = hash("sha256", utf8_encode($input));
Run Code Online (Sandbox Code Playgroud)

我用input ="test"运行示例代码.但是,我得到了2个不同的哈希字符串:

Java: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2bb822cd15d6c15b0f0a8
PHP: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么以及如何让它们相互匹配?请注意,我无法修改Java实现代码,只能修改PHP.

万分感激!

php java hash sha256

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

使用secp256r1曲线和SHA256算法生成ECDSA签名 - BouncyCastle

我正在尝试使用带有secp256r1曲线(P256)的ECDSA和用于消息散列的SHA256算法生成签名.我也在使用Bouncy Castle图书馆.代码如下,

public class MyTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        new MyTest().getSign();
    }

    void getSign() {
        // Get the instance of the Key Generator with "EC" algorithm

        try {
            KeyPairGenerator g = KeyPairGenerator.getInstance("EC");
            ECGenParameterSpec kpgparams = new ECGenParameterSpec("secp256r1");
            g.initialize(kpgparams);

            KeyPair pair = g.generateKeyPair();
            // Instance of signature class with SHA256withECDSA algorithm
            Signature ecdsaSign = Signature.getInstance("SHA256withECDSA");
            ecdsaSign.initSign(pair.getPrivate());

            System.out.println("Private Keys is::" + pair.getPrivate());
            System.out.println("Public Keys is::" + pair.getPublic());

            String msg = "text ecdsa with sha256";//getSHA256(msg) …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle sha256 ecdsa

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

TLSv1.2与SHA1?

我确信有一个简单的答案,但我如何使用TLSv1.2与非TLSv1.2密码套件?例如,此链接显示连接正在使用TLS 1.2,但使用的是AES_256_CBC_SHA?我以为所有TLSv1.2都必须是SHA256或更高?

而且,paypal home显示"Connection使用TLS 1.2",但所选的密码是RSA_128_RC4_SHA ???

我错过了什么吗?(使用谷歌浏览器的所有信息)

无法发布我的捕获的屏幕,因为我没有至少10个声誉??? WTF

encryption ssl sha256

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

使用swift4创建SHA256哈希

我做了一些环顾四周,但我只能找到使用Objective-C创建SHA256哈希的示例.有没有办法只用Swift4做到这一点?

sha256 swift4 xcode9

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

Node.js中大文件的校验和

我正在编写脚本以建立图片数据库。我有一个可以正常工作的脚本。它在9分24秒内通过包含5670个文件的文件夹,总计13.08 GB数据。然后,我尝试在更新的较大照片上执行,但执行量似乎大大减少了。在20分钟内,仅计算了一个文件夹中的三个小预览文件的哈希,其中包含431个文件,总计7.58 GB。

我究竟做错了什么?

var fs = require('fs')
var crypto = require('crypto')
var util = require('util')
var p = require('path')
var sqlite3 = require('sqlite3').verbose()
var db = new sqlite3.Database('./sqlite.db')
const hash_algorithm = 'sha256'

var fileCount = 0

function getFiles(directory) {
    fs.readdir(directory, function(err, files) {
        for (var i in files) {
            var filepath = directory + '/' + files[i]
            fileStat(filepath)
        }
    })
}

function fileStat(filepath) {
    fs.stat(filepath, function(err, stats) {
        if (stats.isDirectory()) {
            getFiles(filepath)
        } else {
            computeHash(filepath, hash_algorithm, function(err, hash) …
Run Code Online (Sandbox Code Playgroud)

checksum sha256 node.js

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