我有一个要求,我需要计算图像的哈希并将其上传到网络服务。使用Cordova API捕获图像,API返回该图像的URI。
我检查了CryptoJS,但它输入了一个字符串。
var hash = CryptoJS.MD5("Message");
我们可以用任何方式计算图像的哈希值吗?
CryptoJS Lib:CryptoJS Home Page
任何其他库也可以,只要它可以从Cordova App使用。
答案 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)
}
}
convert the string to bytes using Latin-1.
该结果可以被AWS要求用作content-md5。