使用CryptoJS计算图像的MD5或SHA

时间:2014-10-16 10:48:51

标签: javascript cordova md5 sha

我有一个要求,我需要计算图像的哈希并将其上传到网络服务。使用Cordova API捕获图像,API返回该图像的URI。

我检查了CryptoJS,但它输入了一个字符串。

var hash = CryptoJS.MD5("Message");

我们可以用任何方式计算图像的哈希值吗?

CryptoJS Lib:CryptoJS Home Page

任何其他库也可以,只要它可以从Cordova App使用。

2 个答案:

答案 0 :(得分:1)

使用Cordova API,您可以获得Base64编码的图片而不是URI。您可以使用CryptoJS轻松哈希。

调用getPicture API时,请使用DATA_URL选项获取 Base64 编码图像作为结果:

navigator.camera.getPicture(onSuccess, onFail, {
    destinationType: Camera.DestinationType.DATA_URL }); 

这将返回onSuccess方法中的base64编码图像作为参数:

function onSuccess(imageURI) {
    var hash = CryptoJS.MD5(imageURI);
}

答案 1 :(得分:0)

这是我用HTML生成图像文件的MD5的方法:

function onFileChange (e) {
  const readerBuffer = new FileReader()
  readerBuffer.readAsBinaryString(e.target.files[0])
  readerBuffer.onloadend = function (e) {
    const hash = CryptoJS.MD5(CryptoJS.enc.Latin1.parse(e.target.result))
    const content-md5 = hash.toString(CryptoJS.enc.Base64)
  }
}
  1. 需要以二进制格式读取图像。
  2. 阅读this后,我知道我们需要convert the string to bytes using Latin-1.

该结果可以被AWS要求用作content-md5。