如何使用Java计算DKIM签名中的Body Hash

问题描述 投票:0回答:0

我正在尝试验证我在 Gmail 帐户中收到的电子邮件的 DKIM 签名。为了验证签名,我试图将 DKIM 签名中收到的正文哈希值与我收到的电子邮件正文的哈希值进行比较。我正在使用 bean

com.google.api.services.gmail.model.Message
使用 Java 代码从 Gmail 获取我的数据。我正在计算的哈希和 DKIM 签名中的 bodyhash 不匹配。由于消息正文在部分 [] 中返回,我尝试使用纯文本和 html 来匹配标题中的那个。它仍然没有工作。

我正在尝试使用以下程序计算正文哈希。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.james.jdkim.codec.binary.Base64;

public class TestBodyHash {

    public static void main(String[] args) throws NoSuchAlgorithmException {
        String bodyData = "PGRpdiBkaXI9Imx0ciI-VGVzdCBIZWFkZXJzPC9kaXY-DQo=";
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] bytes = Base64.decodeBase64(bodyData.intern());
        System.out.println(new String(bytes));
        byte[] hash = digest.digest(new String(bytes).getBytes());
        System.out.println("Hash is:" + hash);
        System.out.println("Hash is:" + "SHA-256-" + Base64.encodeBase64String(hash));

    }

}

DKIM 签名:

{"name":"DKIM-Signature","value":"v=1; a=rsa-sha256; c=relaxed/relaxed;        d=gmail.com; s=google; t=1679956087;        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject         :date:message-id:reply-to;        bh=Ki2uJWkSH103C10Kj1bJx0G+BVr6m0yr/R4PjzqnhkU=;        b=LIzMkSoN77uAFgR/H/yz0JVKFcKFj7wv5CQ7PPKvXFWVrIvx62xCYGs8Djy2rhSYEx         vw1R3VlqERip388piXwk3FDdSYPZ2UtToZFZBTwXxTFErgTwFBpxeVeOjb+XDqPNs1s0         ZGK6NOkw47r33KClGE6qD1j7nrQoW2Ji7IRpcV+bY7Ner2pUSfU7MWKBIGvct5Oz/ios         axng0csVZbkPhiDXcOphBzrwrKF26IWwhT4Q08A36X9TbSNLT30gSzuPsDZCqSKR74UQ         QW1cFXr5mKIDZUfToMdB2P2+HS5PwB4EWPQ14OgC2nfCDLJ0nO69ezbRTigAn6BBGJ+M         jdJg=="}

有效载荷:

{"name":"Content-Type","value":"multipart/alternative; boundary=\"000000000000cf4ed605f7e94164\""}],"mimeType":"multipart/alternative","partId":"","parts":[{"body":{"data":"VGVzdCBIZWFkZXJzDQo=","size":14},"filename":"","headers":[{"name":"Content-Type","value":"text/plain; charset=\"UTF-8\""}],"mimeType":"text/plain","partId":"0"},{"body":{"data":"PGRpdiBkaXI9Imx0ciI-VGVzdCBIZWFkZXJzPC9kaXY-DQo=","size":35},"filename":"","headers":[{"name":"Content-Type","value":"text/html; charset=\"UTF-8\""}],"mimeType":"text/html","partId":"1"}]},"sizeEstimate":4993,"snippet":"Test Headers","threadId":"187252f934535794"}
java hash gmail-api dkim
© www.soinside.com 2019 - 2024. All rights reserved.