我正在尝试使用MD5加密文件。下面列出了我的代码。
import java.security.MessageDigest
import scala.io.Source
import java.io.PrintWriter
import java.io.File
object MD5 {
def md5(file: String)= {
val text=Source.fromFile(file)
val s=text.mkString
val hash = MessageDigest.getInstance("MD5").digest(s.getBytes)
hash.map("%02x".format(_)).mkString
}
def main(args:Array[String])={
val cipher=md5("InputFile")
val pw = new PrintWriter(new File("OutputFile"))
pw.write(cipher)
pw.close
}}
无论我的InputFile有多大,OutputFile总是看起来大小相同(大约10个字节)。问题出在哪里?有人可以帮我搞清楚吗?
答案 0 :(得分:4)
通过" ecnryption"人们通常意味着这样一种数据转换,即某人拥有适当的秘密数据"可以扭转这种转变。
另一方面,"Hash function"根据定义是非唯一的可重复转换,它将仲裁数据转换为固定大小的"哈希"。 MD5是一个旧的cryptographic hash function,这意味着这是一个"哈希函数"与其他加密相关的属性(例如很难找到碰撞)。旁注:MD5已经足够老了,不再被认为是加密的了。 MD5的典型当前用途是验证数据完整性。
所以是的,MD5用于加密是错误的。如果您想加密,请查看AES ciphers