C++ 在c+中生成SHA256+;

C++ 在c+中生成SHA256+;,c++,sha256,C++,Sha256,我需要生成一些数据。我发现这是一个非常好的。现在我的问题是,我可以使用自己的密钥生成sha256吗 编辑: 首先,很抱歉问错了问题。我的意思不是更改用于生成SHA256的密钥。我真正需要的是,将下面的java代码转换为c++ public static String calculateHMAC(String data, String key) throws Exception { String result; try { // get an hmac_sha2 key from the

我需要生成一些数据。我发现这是一个非常好的。现在我的问题是,我可以使用自己的密钥生成sha256吗

编辑:

首先,很抱歉问错了问题。我的意思不是更改用于生成SHA256的密钥。我真正需要的是,将下面的java代码转换为c++

public static String calculateHMAC(String data, String key) throws Exception {
String result;
try {
    // get an hmac_sha2 key from the raw key bytes
    SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA2_ALGORITHM);

    // get an hmac_sha1 Mac instance and initialize with the signing key
    Mac sha256_HMAC = Mac.getInstance(HMAC_SHA2_ALGORITHM);
    sha256_HMAC.init(signingKey);

    // compute the hmac on input data bytes
    byte[] rawHmac = sha256_HMAC.doFinal(data.getBytes());

    // base64-encode the hmac 
    StringBuilder sb = new StringBuilder();
    char[] charArray = Base64.encode(rawHmac);
        for ( char a : charArray){
            sb.append(a);
            }
        result = sb.toString();
    }
    catch (Exception e) {
        throw new SignatureException("Failed to generate HMAC : " + e.getMessage());
    }
    return result;
}
SHA-256是加密哈希函数家族的成员,它通常从输入消息生成256位或32字节的哈希代码

这并不是一种加密机制,它意味着从散列码(也称为消息摘要或简称摘要)无法重新生成消息

因此,需要使用
SHA-256
来生成消息摘要

此外,哈希函数被认为实际上不可能反转,也就是说,仅从其哈希值(消息摘要)重新创建输入数据。因此,您不能将哈希消息/消息摘要“解密”到其输入消息,这意味着哈希不可能反转。比如说,

SHA256(plainText) -> digest
然后有NO机制,如
inverseSHA256
,可以执行以下操作

inverseSHA256(digest) -> plainText

我推荐免费图书馆。下面是一个示例。

sha是一个哈希函数,而不是加密模式。标签被移除。那么你的“自己的密钥”是什么意思?你把盐和加密密钥混在一起了吗?你为什么要更改它?SHA256的全部意义在于,任何人都可以在一段数据上运行它,并将结果与已知的良好值进行比较,以确认数据的完整性。