Переписать код с Java (Android) на Swift 3 (iOS)
Цена договорная
•
безналичный расчёт
Нужно переписать код на 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;
}
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;
}
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.