Переписать код с Java (Android) на Swift 3 (iOS)

Цена договорная • безналичный расчёт
28 апреля 2018, 18:45 • 1 отклик • 18 просмотров
Нужно переписать код на Swift 3 для iOS 9.3 и выше, он должен создавать такой же хеш md5 (без HexString) и такой же результат от Base64 encode

private String getURLwithSignature(String initURL) {
SimpleDateFormat format = new SimpleDateFormat("M/d/y h:m:s a", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));

Date myDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(myDate);
Date currentTime = calendar.getTime();

String today = format.format(currentTime);

String initial_url = initURL;

String ip = ipaddress;

String key = "key";

String validminutes = "20";

String to_hash = ip + key + today + validminutes;

String base64hash = encodeBase64(md5(to_hash));
String urlsignature = "server_time=" + today + "&hash_value=" + base64hash + "&validminutes=" + validminutes;
String base64urlsignature = encodeBase64String(urlsignature);
String signedurlwithvalidinterval = initial_url + "?wmsAuthSign=" + base64urlsignature;
appendLog(signedurlwithvalidinterval);

return signedurlwithvalidinterval;
}

public static String encodeBase64String(String text) {
byte[] data = text.getBytes(Charset.forName("UTF-8"));
String base64 = new String(Base64.encode(data, Base64.DEFAULT)).replace("\n", "");

return base64;
}

public static String encodeBase64(byte[] bytes) {
String base64 = new String(Base64.encode(bytes, Base64.DEFAULT)).replace("\n", "");

return base64;
}

public static byte[] md5(final String s) {
final String MD5 = "MD5";
byte messageDigest[];

try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance(MD5);
digest.update(s.getBytes());
messageDigest = digest.digest();

return messageDigest;

} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}

return null;
}
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Заказчик
задача была решена быстро :-)
6 лет назад
R50 3cbad74e4969d4ba566ce0202e306a2f
Фрилансер
Заказчик оказался человеком добродушным и честным, охотно шел на контакт. Оплата была постфактум и Антон выплатил все в течении 5 минут. Рекомендую к сотрудничеству.
6 лет назад