I am new to swift iOS and need to generate checksum using md5 encryption technique.
I have code written in java to generate checksum and i need to do the same.
private final int radixNumber = 16;
private final int radixNumberMultiplier = 0xff;
private final int radixNumberAdder = 0x100;
public String generateChecksum(final String paramap, final String secretKey, final String salt) throws Exception {
String generatedChecksum = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update((secretKey + salt).getBytes());
byte[] bytes = md.digest(paramap.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
sb.append(Integer.toString((bytes[i] & radixNumberMultiplier) + radixNumberAdder, radixNumber)
.substring(1));
}
generatedChecksum = sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return generatedChecksum;
}
In Swift5
func MD5(param: String, secretKey: String, salt: String) -> Data {
let length = Int(CC_MD5_DIGEST_LENGTH)
let combineString = param + secretKey + salt
let messageData = combineString.data(using:.utf8)!
var digestData = Data(count: length)
_ = digestData.withUnsafeMutableBytes { digestBytes -> UInt8 in
messageData.withUnsafeBytes { messageBytes -> UInt8 in
if let messageBytesBaseAddress = messageBytes.baseAddress, let digestBytesBlindMemory = digestBytes.bindMemory(to: UInt8.self).baseAddress {
let messageLength = CC_LONG(messageData.count)
CC_SHA256(messageBytesBaseAddress, messageLength, digestBytesBlindMemory)
//CC_MD5(messageBytesBaseAddress, messageLength, digestBytesBlindMemory)
}
return 0
}
}
return digestData.base64EncodedData()
}
However, I am not sure that I am doing it in the right way or not. Also not getting where should I add radixNumber, radixNumberMultiplier and radixNumberAdder. Thanks in advance.