|
|
@@ -43,7 +43,7 @@ extension String {
|
|
|
}
|
|
|
|
|
|
/** array of bytes, little-endian representation */
|
|
|
-func arrayOfBytes<T>(value:T, length:Int? = nil) -> [UInt8] {
|
|
|
+func arrayOfBytes<T>(value: T, length: Int? = nil) -> [UInt8] {
|
|
|
let totalBytes = length ?? (sizeofValue(value) * 8)
|
|
|
|
|
|
let valuePointer = UnsafeMutablePointer<T>.alloc(1)
|
|
|
@@ -51,7 +51,7 @@ func arrayOfBytes<T>(value:T, length:Int? = nil) -> [UInt8] {
|
|
|
|
|
|
let bytesPointer = UnsafeMutablePointer<UInt8>(valuePointer)
|
|
|
var bytes = [UInt8](count: totalBytes, repeatedValue: 0)
|
|
|
- for j in 0..<min(sizeof(T),totalBytes) {
|
|
|
+ for j in 0..<min(sizeof(T), totalBytes) {
|
|
|
bytes[totalBytes - 1 - j] = (bytesPointer + j).memory
|
|
|
}
|
|
|
|
|
|
@@ -87,7 +87,7 @@ class HashBase {
|
|
|
}
|
|
|
|
|
|
/** Common part for hash calculation. Prepare header data. */
|
|
|
- func prepare(len:Int = 64) -> NSMutableData {
|
|
|
+ func prepare(len: Int = 64) -> NSMutableData {
|
|
|
let tmpMessage: NSMutableData = NSMutableData(data: self.message)
|
|
|
|
|
|
// Step 1. Append Padding Bits
|
|
|
@@ -123,22 +123,22 @@ class MD5 : HashBase {
|
|
|
6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]
|
|
|
|
|
|
/** binary integer part of the sines of integers (Radians) */
|
|
|
- private let k: [UInt32] = [0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,
|
|
|
- 0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,
|
|
|
- 0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,
|
|
|
- 0x6b901122,0xfd987193,0xa679438e,0x49b40821,
|
|
|
- 0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa,
|
|
|
- 0xd62f105d,0x2441453,0xd8a1e681,0xe7d3fbc8,
|
|
|
- 0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,
|
|
|
- 0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a,
|
|
|
- 0xfffa3942,0x8771f681,0x6d9d6122,0xfde5380c,
|
|
|
- 0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70,
|
|
|
- 0x289b7ec6,0xeaa127fa,0xd4ef3085,0x4881d05,
|
|
|
- 0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,
|
|
|
- 0xf4292244,0x432aff97,0xab9423a7,0xfc93a039,
|
|
|
- 0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1,
|
|
|
- 0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1,
|
|
|
- 0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391]
|
|
|
+ private let k: [UInt32] = [0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
|
|
|
+ 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
|
|
|
+ 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
|
|
|
+ 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
|
|
|
+ 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
|
|
|
+ 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
|
|
|
+ 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
|
|
|
+ 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
|
|
|
+ 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
|
|
|
+ 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
|
|
|
+ 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x4881d05,
|
|
|
+ 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
|
|
|
+ 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
|
|
|
+ 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
|
|
|
+ 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
|
|
|
+ 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391]
|
|
|
|
|
|
private let h:[UInt32] = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]
|
|
|
|
|
|
@@ -157,7 +157,7 @@ class MD5 : HashBase {
|
|
|
let chunkSizeBytes = 512 / 8 // 64
|
|
|
var leftMessageBytes = tmpMessage.length
|
|
|
for (var i = 0; i < tmpMessage.length; i = i + chunkSizeBytes, leftMessageBytes -= chunkSizeBytes) {
|
|
|
- let chunk = tmpMessage.subdataWithRange(NSRange(location: i, length: min(chunkSizeBytes,leftMessageBytes)))
|
|
|
+ let chunk = tmpMessage.subdataWithRange(NSRange(location: i, length: min(chunkSizeBytes, leftMessageBytes)))
|
|
|
|
|
|
// break chunk into sixteen 32-bit words M[j], 0 ≤ j ≤ 15
|
|
|
var M:[UInt32] = [UInt32](count: 16, repeatedValue: 0)
|
|
|
@@ -175,9 +175,9 @@ class MD5 : HashBase {
|
|
|
// Main loop
|
|
|
for j in 0..<k.count {
|
|
|
var g = 0
|
|
|
- var F:UInt32 = 0
|
|
|
+ var F: UInt32 = 0
|
|
|
|
|
|
- switch (j) {
|
|
|
+ switch j {
|
|
|
case 0...15:
|
|
|
F = (B & C) | ((~B) & D)
|
|
|
g = j
|
|
|
@@ -218,4 +218,4 @@ class MD5 : HashBase {
|
|
|
|
|
|
return buf.copy() as! NSData;
|
|
|
}
|
|
|
-}
|
|
|
+}
|