1

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.

  • Does this answer your question? [How to use CC\_MD5 method in swift language](https://stackoverflow.com/questions/24123518/how-to-use-cc-md5-method-in-swift-language) – Bram Aug 25 '23 at 10:31

0 Answers0