com.kaltura.client.utils.EncryptionUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kalturaApiClient Show documentation
Show all versions of kalturaApiClient Show documentation
KalturaClient is a library of Java classes that can be used to interact
with the Kaltura REST API. More information about the REST API can be
found at http://corp.kaltura.com/Products/Kaltura-API Many of the Java classes
in this library are auto-generated from a schema that defines the objects that
are used to interect with the API. The current schema can be found at
http://www.kaltura.com/api_v3/api_schema.php
package com.kaltura.client.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
* Created by tehilarozin on 21/08/2016.
*/
public class EncryptionUtils {
public static final int BLOCK_SIZE = 16;
public static byte[] encryptSHA1(String str) throws Exception {
return encryptSHA1(str.getBytes());
}
public static byte[] encryptSHA1(byte[] data) throws Exception {
try {
MessageDigest algorithm = MessageDigest.getInstance("SHA1");
algorithm.reset();
algorithm.update(data);
byte infoSignature[] = algorithm.digest();
return infoSignature;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new Exception(e);
}
}
public static byte[] encryptAES(String secretKey, byte[] dataBytes) throws Exception {
// Key
byte[] encryptedKey = encryptSHA1(secretKey);
byte[] keyBytes = new byte[BLOCK_SIZE];
System.arraycopy(encryptedKey, 0, keyBytes, 0, BLOCK_SIZE);
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
// IV
byte[] ivBytes = new byte[BLOCK_SIZE];
IvParameterSpec iv = new IvParameterSpec(ivBytes);
// Text
int textSize = ((dataBytes.length + BLOCK_SIZE - 1) / BLOCK_SIZE) * BLOCK_SIZE;
byte[] textAsBytes = new byte[textSize];
Arrays.fill(textAsBytes, (byte) 0);
System.arraycopy(dataBytes, 0, textAsBytes, 0, dataBytes.length);
// Encrypt
Cipher cipher = Cipher.getInstance("AES/CBC/NOPADDING");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
return cipher.doFinal(textAsBytes);
}
public static String encryptMD5t(String str) {
if (str == null || str.length() == 0) {
//throw new IllegalArgumentException("String to encript cannot be null or zero length");
return "";
}
MessageDigest digester = null;
try {
digester = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
digester.update(str.getBytes());
byte[] hash = digester.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
if ((0xff & hash[i]) < 0x10) {
hexString.append("0" + Integer.toHexString((0xFF & hash[i])));
} else {
hexString.append(Integer.toHexString(0xFF & hash[i]));
}
}
return hexString.toString();
}
public static String encryptMD5(String str) {
if (str == null || str.length() == 0) {
//throw new IllegalArgumentException("String to encript cannot be null or zero length");
return "";
}
MessageDigest digester = null;
try {
digester = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
digester.update(str.getBytes());
byte[] digest = digester.digest();
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
return sb.toString();
}
}