scala – 数据流的SHA256
发布时间:2020-12-16 18:13:24 所属栏目:安全 来源:网络整理
导读:我有一个用例,我正在使用GET请求从URL下载文件.是否可以在不保存到磁盘或将整个对象保存在内存中的情况下计算文件流的SHA256? 解决方法 这可以通过 MessageDigest 和 Sink.fold 完成. 首先,我们需要一个函数来创建一个空摘要和一个用 ByteBuffer 更新摘要的
我有一个用例,我正在使用GET请求从URL下载文件.是否可以在不保存到磁盘或将整个对象保存在内存中的情况下计算文件流的SHA256?
解决方法
这可以通过
MessageDigest 和
Sink.fold 完成.
首先,我们需要一个函数来创建一个空摘要和一个用 import java.security.MessageDigest import java.nio.ByteBuffer def emptySHA256Digest : MessageDigest = MessageDigest getInstance "SHA-256" val updateDigest : (MessageDigest,ByteBuffer) => MessageDigest = (messageDigest,byteBuffer) => { messageDigest update byteBuffer messageDigest } 然后可以在折叠中使用这两个函数,该折叠应用于HttpResponse的实体,以使用实体中的所有ByteString值更新摘要: import akka.http.scaladsl.model.HttpResponse val responseBodyToDigest : HttpResponse => Future[MessageDigest] = (_ : HttpResponse) .entity .dataBytes .map(_.asByteBuffer) .runFold(emptySHA256Digest)(updateDigest) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |