Ich habe ein Bild, das Base64-kodiert ist. Wie kann ich das am besten in Java dekodieren? Hoffentlich nur mit den Bibliotheken, die in Sun Java 6 enthalten sind.
Antwort
Zu viele Anzeigen?
vaquar khan
Punkte
9331
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/***
*
* @author Vaquar khan
*
*
*/
public class AES {
private static SecretKeySpec secretKey;
private static final String VK_secretKey = "VaquarKhan-secrate-key!!!!";
private static byte[] key;
/**
*
* @param myKey
*/
public static void setKey(String myKey) {
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
/**
* encrypt
* @param strToEncrypt
* @param secret
* @return
*/
public static String encrypt(String strToEncrypt, String secret) {
try {
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
} catch (Exception e) {
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
/**
* decrypt
* @param strToDecrypt
* @param secret
* @return
*/
public static String decrypt(String strToDecrypt, String secret) {
try {
setKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
} catch (Exception e) {
System.out.println("Error while decrypting: " + e.toString());
}
return null;
}
public static void main(String[] args) {
final String secretKey = VK_secretKey;
String password = "VKhan@12";
//
String encryptedString = AES.encrypt(password, secretKey);
String decryptedString = AES.decrypt(encryptedString, secretKey);
//
System.out.println(password);
System.out.println(encryptedString);
System.out.println(decryptedString);
}
}
- See previous answers
- Weitere Antworten anzeigen
1 Stimmen
Unabhängig davon, welche Art von Anwendung Sie verwenden (Experiment oder nicht), ist es so einfach wie das Erstellen einer einzigen Base64.java-Datei in Ihrem utils-Paket mit dem Code hier: migbase64.sourceforge.net Schauen Sie sich die Leistungstabellen an und bemerken Sie den Unterschied: 4-5 mal so schnell.
0 Stimmen
ZU IHRER INFORMATION: GEP 135 schlägt vor, eine standardisierte, auffindbare API für die Java-Plattform einzuführen.
0 Stimmen
Es gibt Fortschritte: mail.openjdk.java.net/pipermail/core-libs-dev/2012-October/
2 Stimmen
Hier ist eine weitere Umsetzung, die ich vor kurzem durchgeführt habe: github.com/n1hility/playground/blob/master/src/main/java/org/
3 Stimmen
Wenn Sie eine Android-App entwickeln, hat Google dies bereits getan: developer.Android.com/reference/Android/util/Base64.html