MD5加密文件字符串数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5加密文件字符串数据相关的知识,希望对你有一定的参考价值。

  1. 概念解释:Message Digest(摘要) Algorithm (算法) : 信息摘要算法第五版

  2. 就是把任意长度的字节串编程一个一定长的十六进制数字串

  3. 特点

    1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

    2、容易计算:从原数据计算出MD5值很容易。

    3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

    4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

  4. 算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值,最终返回一个128位的1或者0

  5. 这个算法是不可逆的。

  6. 这个算法可以帮你查看文件是否被修改

  7. swift
    struct MD5Utility {
        static func getMD5FromString(string: String) -> NSMutableString {
            let original = string.cStringUsingEncoding(NSUTF8StringEncoding)
            let digest = UnsafeMutablePointer<UInt8>.alloc(16)
            let length = UInt32(strlen(original!))
            CC_MD5(original!, length, digest)
    
            return getMD5Str(digest)
        }
        
        static func getMD5FromData(data: NSData) ->NSMutableString {
            let original = data.bytes
            let ori = unsafeBitCast(original, UnsafePointer<Int8>.self)
            
            let MD5Length = Int(CC_MD5_DIGEST_LENGTH)
            let digest = UnsafeMutablePointer<UInt8>.alloc(MD5Length)
            
            let length = UInt32(strlen(ori))
            CC_MD5(original, length, digest)
    
            return getMD5Str(digest)
            
        }
        
        static func getMD5FromFilePath(path: String) -> NSMutableString {
            let handel = NSFileHandle(forReadingAtPath: path)
            
            if handel == nil {
                print("failed")
                return NSMutableString(string: "file is not opened")
            }
            // 先声明一个context上下文
            var context = CC_MD5_CTX()
            // 初始化一个上下文
            CC_MD5_Init(&context)
            
            var done = true
            while done {
                var data = handel?.readDataOfLength(1024)
                // 对上下文进行更新
                CC_MD5_Update(&context, &data, UInt32((data?.length)!))
                if data?.length == 0 {
                    done = false
                }
            }
            
            let digest = UnsafeMutablePointer<UInt8>.alloc(16)
            // 最终确定上下文
            CC_MD5_Final(digest, &context)
            
            return getMD5Str(digest)
        }
        
        private static func getMD5Str(digest: UnsafeMutablePointer<UInt8>) -> NSMutableString {
            let md5String = NSMutableString(capacity: 16 * 2)
            
            for index in 0..<16 {
                md5String.appendFormat("%02x", digest[index])
            }
            digest.destroy()
            return md5String
        }
    }
    

     

以上是关于MD5加密文件字符串数据的主要内容,如果未能解决你的问题,请参考以下文章

MD5加密一个文件怎么做???

VC++对字符串进行加密的MD5String和获取文件MD5值的MD5File函数的封装(附源码)

python实现MD5加密

js文件里面的MD5加密方式。我直接在数据库改过密码。但是登陆后台还是显示密码错误是否这个文件的原因

C#代码加密字符串,与SQL加密结果不一致

jmeter如何使用使用MD5加密?