标签: sha256

通过 Python 为自定义 MTA 生成 DKIM 签名

好的,所以我并没有完全迷失 DKIM。我知道使用公钥等进行编码和设置 DNS 记录的一般规则。我遇到的问题是合并出站电子邮件的“动态”签名并注入到我的标头中,因为我的 MTA 是自定义的,用以下语言编写python是从头开始的,不是开箱即用的。想知道是否有人有一个使用 DKIM 发送一封电子邮件的小 Python 示例,并完成所有操作。就像使用您的私钥生成 256 位加密体一样,该私钥与您的 dns 设置中的姊妹(公钥)密钥相匹配。

python email base64 sha256 dkim

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

CMake 检查下载文件的哈希值 (MD5 / SHA256)

add_custom_commandUtil.cmake脚本中使用 CMake 下载几个文件,这些文件稍后将在构建过程中使用。然而,这些文件可能会发生变化,我想添加一种方法来根据提供的值(在 CMake 内)检查本地文件的哈希值,以决定是否需要重新下载文件。

目前,一旦文件被下载,CMake将不会考虑重新下载它,因为该文件已经存在于本地。

将来,我想提供该文件的 MD5 / SHA256 校验和,并确保本地文件是正确的。

这是我想要做的(这只是一个概念示例):

add_custom_command( OUTPUT ./file.dat
    COMMAND wget ${FILE_PATH}
)
if (opt_HASH)
    add_custom_command(OUTPUT ${local_HASH}
        COMMAND local_HASH=$(sha256sum ./file.dat)
        DEPENDS ./file.dat
    )
    if (NOT ${opt_HASH} STREQUAL ${local_HASH})
        # throw ERROR
    endif()
endif()
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我现在只想检测不匹配,甚至不想自动下载更改的文件。显然是opt_HASH通过 CMake 提供的,但重要的是这个调用需要依赖于已经下载的文件,我似乎能够通过更简单的调用来做到这一点FILE()

PS:如果更容易的话,我也可以使用MD5over SHA256

c++ hash download cmake sha256

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

SHA-256 - NodeJS 和 Java 代码之间不匹配

我在 Nodejs 上有这段代码,我需要像 Java 一样编写,但结果不同。我认为问题出在十六进制编码上。但我不明白它是如何工作的。

Nodejs代码:

crypto.createHash('sha256').update(seed, 'hex').digest()
Run Code Online (Sandbox Code Playgroud)

Java代码:

digest = MessageDigest.getInstance("SHA-256");
byte[] encodedhash = digest.digest(seedString);
Run Code Online (Sandbox Code Playgroud)

java cryptography sha256 node.js

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

HMAC<Sha256> 的结果与另一个实现不同

我正在尝试使用 SHA256 实现 HMAC 验证以与 API 交互。我找到了hmacsha2板条箱,根据他们的示例,它们将非常适合我的目的。

我有这个代码:

extern crate hmac;
extern crate sha2;

use hmac::{Hmac, Mac};
use sha2::{Digest, Sha256};

pub fn verify(message: &[u8], code: &[u8], key: &[u8]) -> bool {
    type HmacSha256 = Hmac<Sha256>;

    let mut mac = HmacSha256::new_varkey(key).unwrap();
    mac.input(message);

    let result = mac.result().code();
    return result == code;
}

#[cfg(test)]
mod tests {
    use verify;
    #[test]
    fn should_work() {
        assert!(verify(
          b"code=0907a61c0c8d55e99db179b68161bc00&shop=some-shop.myshopify.com&timestamp=1337178173",
          b"4712bf92ffc2917d15a2f5a273e39f0116667419aa4b6ac0b3baaf26fa3c4d20",
          b"hush"
        ), "Returned false with correct parameters!");
    }

    #[test]
    fn shouldnt_work() {
        assert!( …
Run Code Online (Sandbox Code Playgroud)

cryptography sha256 hmac rust

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

与 JS 方法相比,Rust 中的 Hmac SHA256 Base64 编码结果不正确

我正在尝试将加密货币交换 API 从 JavaScript 移植到 Rust。JavaScript 版本进行身份验证并连接。有效负载和密钥使用 Hmac Sha256 进行签名并编码为 Base64。下面是 JavaScript 的工作实现。

var param = "test";
var privateKey = "secret";
var signature = crypto.createHmac('sha256', new Buffer(privateKey, 'utf8'))
    .update(param)
    .digest('base64');
Run Code Online (Sandbox Code Playgroud)

它返回以下签名:Aymga2LNFrM+tnkr6MYLFY2Jou46h2/Omogeu0iMCRQ=

在 Rust 中,我使用 Hmac SHA256 并将结果编码回 Base64,但我无法接近预期的签名。这是我两天来最好的尝试:

extern crate ring;
extern crate data_encoding;
extern crate hex;

use ring::{digest, hmac};
use data_encoding::BASE64;
use hex::encode as hex_encode;

fn main() {
    let secret_key = "secret";
    let payload = "test";
    let signed_key = hmac::SigningKey::new(&digest::SHA256, secret_key.as_bytes());
    let signature = hex_encode(hmac::sign(&signed_key, payload.as_bytes()).as_ref());
    let b64_encoded_sig …
Run Code Online (Sandbox Code Playgroud)

cryptography sha256 hmac rust

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

如何生成用于数据传输的 HMAC-SHA-256 登录 javascript?

我有一个 Angular 项目,我必须在其中实现数据传输付款。但我无法生成付款标志。

我正在按照此链接(在此处输入链接描述)给出的流程来生成标志。

但我无法实现它。

我正在使用 Angular 库 crypto-js 生成 HMAC-SHA-256 签名字符串。

这是我的 JavaScript 代码。

const merchantId = 'xxxxxxx';
const refNo = '1234567890';
const amount = 0;
const currency = 'CHF';
const theme = 'DT2015';
const paymentmethod = 'VIS';

const stringSs = merchantId+amount+currency+refNo;

const base = 16;
// My Hmac Key
const s = 'fa3d0ea1772cf21e53158283e4f123ebf1eb1ccfb15619e2fc91ee6860a2e5e48409e902b610ce5dc6f7f77fab8affb60d69b2a7aa9acf56723d868d36ab3f32';

// Step 1: Code to generate hex to byte of hmac key
const a = s.replace(/../g, '$&_').slice (0, -1).split ('_').map ((x) …
Run Code Online (Sandbox Code Playgroud)

javascript sha256 cryptojs angular

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

Python AES 256 CBC 加密 - ValueError:AES 密钥长度不正确

我想在 Python 3.8.5 上使用 AES 256 为我的明文编写加密,但是当我执行它时,我收到错误ValueError:不正确的 AES 密钥长度(64 字节)我的代码中是否有问题?

plaintext = "ABC123"
secret_key = "6789045129812345"
secret_iv = "4567891122315731"
    
key = hashlib.sha256(str(secret_key).encode('utf-8')).hexdigest()
iv = hashlib.sha256(str(secret_iv).encode('utf-8')).hexdigest()
substring_iv = iv[:16]
cipher_config = AES.new(key.encode("utf-8"), AES.MODE_CBC, substring_iv.encode("utf-8"))
results = base64.b64encode(cipher_config)

print("results : "+results)
Run Code Online (Sandbox Code Playgroud)

python encryption aes sha256

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

SHA256 计算的哈希值似乎有问题

我有以下类,它计算我想要发送到服务器的文件的哈希值。

public class GetHashCode 
    {
        public static string CalculateHash()
        {
            try
            {
                var filePath = "\\\\abc\\abc-fs\\_My-Data\\user\\Documents\\test.jpg";
                var fileStream = File.Open(filePath, FileMode.Open,
                FileAccess.Read, FileShare.ReadWrite);
                var hashProvider = SHA256.Create();
                var buffer = hashProvider.ComputeHash(fileStream);
                return Convert.ToBase64String(buffer);
            }
            catch (Exception err)
            {
                Console.WriteLine(err);
                return null;
            }        
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我通过另一个应用程序将文件发送到服务器时,我可以看到此操作的哈希与我使用上面的代码创建的哈希有点不同:

来自其他应用程序的哈希值(正确的):

R7av4w6Ow3M3z%252bpKPBBpojzvLvyl6aM0Q7q%252bJ%252fDvLPQ%253d
Run Code Online (Sandbox Code Playgroud)

用我的代码生成的哈希:

R7av4w6Ow3M3z+pKPBBpojzvLvyl6aM0Q7q+J/DvLPQ=
Run Code Online (Sandbox Code Playgroud)

所以似乎特殊字符的编码有问题,但我还不知道如何解决这个问题。有人可以帮忙吗?提前致谢!

c# hash sha256

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

MD5 哈希值是否足以检查我的文件是否已正确传输

我必须将文件从一台服务器传输到另一台服务器。自动化脚本将在每晚 12 点进行传输。我想比较传输前文件的 md5 哈希值和传输后文件的 md5 哈希值。md5 哈希值足够用于此目的吗?

或者我应该使用 sha256 ?

我主要担心的是 sha256 比 md5 慢得多。我的文件大小约为每个文件 1 GB。

checksum md5 data-integrity sha256

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

HMAC SHA-256和Facebook signed_request

所以,我正在使用Java验证Facebook的signed_request.不幸的是,我一直在遇到验证过程中的问题.我查看了这个文档,并模拟了他们的算法,但没有成功.我也遵循了本教程,并继续提出我的计算签名与Facebook发送的签名不同.

或者至少,这就是String.equals()告诉我的.

所以我决定再捅一下.

我将其设置为迭代计算签名中的字节和提供的字节.低,看,我的签名的前32个字节完全匹配他们.它只是缺少另外400多字节的数据.

那时,我觉得我应该更好地了解到底发生了什么.我查了一下SHA-256,发现确实只创建了32个字节的信息.那么我留下了超过400字节的数据,Facebook声称是使用HMAC SHA-256算法生成的.我想我应该比较SHA-256的最大长度与我散列数据的长度,但只是表明,有办法,方式,方法有很多剩余空间(邮件大小:575个字节;最大尺寸:2.305843009213694 x 10 ^ 18字节).

Facebook会搞砸吗?或者我错过了什么?

编辑

这是我用来散列数据的函数.我传入我的facebook密码(用于密钥)和base64url编码的JSON对象(用于数据).它始终返回长度为32的字节数组,其数据与facebook提供的签名的前32个字节相匹配.

private byte[] hmacSHA256(String data, String key) throws Exception {
    SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(secretKey);
    mac.update(data.getBytes("UTF-8"));
    byte[] hmacData = mac.doFinal();
    return hmacData;
}
Run Code Online (Sandbox Code Playgroud)

java facebook sha256

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