JAVA Decryption AES/CBC/PKCS5Padding with CryptoJS encryption












0














As stackoverflow I have implemented JAVA AES encryption and Javascript AES decryption but unable to implement JAvascript AES encryption to JAVA AES decryption. Please check the below code for more information.



Java Backend Code Example Code:



 public static String encryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

final SecretKey secret = new SecretKeySpec(secretKeys, "AES");

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);

final AlgorithmParameters params = cipher.getParameters();

final byte iv = params.getParameterSpec(IvParameterSpec.class).getIV();
final byte cipherText = cipher.doFinal(data.getBytes(Charsets.UTF_8));

return DatatypeConverter.printHexBinary(iv) + DatatypeConverter.printHexBinary(cipherText);
} catch (Exception e) {
throw Throwables.propagate(e);
}
}


public static String decryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

// grab first 16 bytes - that's the IV
String hexedIv = data.substring(0, 32);

// grab everything else - that's the cipher-text (encrypted message)
String hexedCipherText = data.substring(32);

byte iv = DatatypeConverter.parseHexBinary(hexedIv);
byte cipherText = DatatypeConverter.parseHexBinary(hexedCipherText);

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKeys, "AES"), new IvParameterSpec(iv));

return new String(cipher.doFinal(cipherText), Charsets.UTF_8);
} catch (BadPaddingException e) {
throw new IllegalArgumentException("Secret key is invalid");
}catch (Exception e) {
throw Throwables.propagate(e);
}
}


Working Decryption code



var str = 'CB5E759CE5FEAFEFCC9BABBFD84DC80C0291ED4917CF1402FF03B8E12716E44C';

console.log("Result: " + CryptoJS.AES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(str.substring(32))
}, CryptoJS.enc.Utf8.parse(CryptoJS.SHA1("test").toString().substring(0,16)),
{
iv: CryptoJS.enc.Hex.parse(str.substring(0,32)),
}).toString(CryptoJS.enc.Utf8))
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/sha1.js"></script>
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/aes.js"></script>


How to implement Javascript AES encryption to Java AES Decryption code. Please give me inputs how to reslove this issue.










share|improve this question






















  • Refer to stackoverflow.com/a/53015144/1235935 for complete Java encryption and decryption code with explanations
    – Saptarshi Basu
    Nov 22 '18 at 10:15
















0














As stackoverflow I have implemented JAVA AES encryption and Javascript AES decryption but unable to implement JAvascript AES encryption to JAVA AES decryption. Please check the below code for more information.



Java Backend Code Example Code:



 public static String encryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

final SecretKey secret = new SecretKeySpec(secretKeys, "AES");

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);

final AlgorithmParameters params = cipher.getParameters();

final byte iv = params.getParameterSpec(IvParameterSpec.class).getIV();
final byte cipherText = cipher.doFinal(data.getBytes(Charsets.UTF_8));

return DatatypeConverter.printHexBinary(iv) + DatatypeConverter.printHexBinary(cipherText);
} catch (Exception e) {
throw Throwables.propagate(e);
}
}


public static String decryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

// grab first 16 bytes - that's the IV
String hexedIv = data.substring(0, 32);

// grab everything else - that's the cipher-text (encrypted message)
String hexedCipherText = data.substring(32);

byte iv = DatatypeConverter.parseHexBinary(hexedIv);
byte cipherText = DatatypeConverter.parseHexBinary(hexedCipherText);

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKeys, "AES"), new IvParameterSpec(iv));

return new String(cipher.doFinal(cipherText), Charsets.UTF_8);
} catch (BadPaddingException e) {
throw new IllegalArgumentException("Secret key is invalid");
}catch (Exception e) {
throw Throwables.propagate(e);
}
}


Working Decryption code



var str = 'CB5E759CE5FEAFEFCC9BABBFD84DC80C0291ED4917CF1402FF03B8E12716E44C';

console.log("Result: " + CryptoJS.AES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(str.substring(32))
}, CryptoJS.enc.Utf8.parse(CryptoJS.SHA1("test").toString().substring(0,16)),
{
iv: CryptoJS.enc.Hex.parse(str.substring(0,32)),
}).toString(CryptoJS.enc.Utf8))
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/sha1.js"></script>
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/aes.js"></script>


How to implement Javascript AES encryption to Java AES Decryption code. Please give me inputs how to reslove this issue.










share|improve this question






















  • Refer to stackoverflow.com/a/53015144/1235935 for complete Java encryption and decryption code with explanations
    – Saptarshi Basu
    Nov 22 '18 at 10:15














0












0








0


0





As stackoverflow I have implemented JAVA AES encryption and Javascript AES decryption but unable to implement JAvascript AES encryption to JAVA AES decryption. Please check the below code for more information.



Java Backend Code Example Code:



 public static String encryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

final SecretKey secret = new SecretKeySpec(secretKeys, "AES");

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);

final AlgorithmParameters params = cipher.getParameters();

final byte iv = params.getParameterSpec(IvParameterSpec.class).getIV();
final byte cipherText = cipher.doFinal(data.getBytes(Charsets.UTF_8));

return DatatypeConverter.printHexBinary(iv) + DatatypeConverter.printHexBinary(cipherText);
} catch (Exception e) {
throw Throwables.propagate(e);
}
}


public static String decryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

// grab first 16 bytes - that's the IV
String hexedIv = data.substring(0, 32);

// grab everything else - that's the cipher-text (encrypted message)
String hexedCipherText = data.substring(32);

byte iv = DatatypeConverter.parseHexBinary(hexedIv);
byte cipherText = DatatypeConverter.parseHexBinary(hexedCipherText);

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKeys, "AES"), new IvParameterSpec(iv));

return new String(cipher.doFinal(cipherText), Charsets.UTF_8);
} catch (BadPaddingException e) {
throw new IllegalArgumentException("Secret key is invalid");
}catch (Exception e) {
throw Throwables.propagate(e);
}
}


Working Decryption code



var str = 'CB5E759CE5FEAFEFCC9BABBFD84DC80C0291ED4917CF1402FF03B8E12716E44C';

console.log("Result: " + CryptoJS.AES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(str.substring(32))
}, CryptoJS.enc.Utf8.parse(CryptoJS.SHA1("test").toString().substring(0,16)),
{
iv: CryptoJS.enc.Hex.parse(str.substring(0,32)),
}).toString(CryptoJS.enc.Utf8))
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/sha1.js"></script>
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/aes.js"></script>


How to implement Javascript AES encryption to Java AES Decryption code. Please give me inputs how to reslove this issue.










share|improve this question













As stackoverflow I have implemented JAVA AES encryption and Javascript AES decryption but unable to implement JAvascript AES encryption to JAVA AES decryption. Please check the below code for more information.



Java Backend Code Example Code:



 public static String encryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

final SecretKey secret = new SecretKeySpec(secretKeys, "AES");

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);

final AlgorithmParameters params = cipher.getParameters();

final byte iv = params.getParameterSpec(IvParameterSpec.class).getIV();
final byte cipherText = cipher.doFinal(data.getBytes(Charsets.UTF_8));

return DatatypeConverter.printHexBinary(iv) + DatatypeConverter.printHexBinary(cipherText);
} catch (Exception e) {
throw Throwables.propagate(e);
}
}


public static String decryptAES(String data, String secretKey) {
try {
byte secretKeys = Hashing.sha1().hashString(secretKey, Charsets.UTF_8)
.toString().substring(0, 16)
.getBytes(Charsets.UTF_8);

// grab first 16 bytes - that's the IV
String hexedIv = data.substring(0, 32);

// grab everything else - that's the cipher-text (encrypted message)
String hexedCipherText = data.substring(32);

byte iv = DatatypeConverter.parseHexBinary(hexedIv);
byte cipherText = DatatypeConverter.parseHexBinary(hexedCipherText);

final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secretKeys, "AES"), new IvParameterSpec(iv));

return new String(cipher.doFinal(cipherText), Charsets.UTF_8);
} catch (BadPaddingException e) {
throw new IllegalArgumentException("Secret key is invalid");
}catch (Exception e) {
throw Throwables.propagate(e);
}
}


Working Decryption code



var str = 'CB5E759CE5FEAFEFCC9BABBFD84DC80C0291ED4917CF1402FF03B8E12716E44C';

console.log("Result: " + CryptoJS.AES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(str.substring(32))
}, CryptoJS.enc.Utf8.parse(CryptoJS.SHA1("test").toString().substring(0,16)),
{
iv: CryptoJS.enc.Hex.parse(str.substring(0,32)),
}).toString(CryptoJS.enc.Utf8))
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/sha1.js"></script>
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/aes.js"></script>


How to implement Javascript AES encryption to Java AES Decryption code. Please give me inputs how to reslove this issue.







javascript java aes cryptojs






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 21 '18 at 9:27









user2786958user2786958

12




12












  • Refer to stackoverflow.com/a/53015144/1235935 for complete Java encryption and decryption code with explanations
    – Saptarshi Basu
    Nov 22 '18 at 10:15


















  • Refer to stackoverflow.com/a/53015144/1235935 for complete Java encryption and decryption code with explanations
    – Saptarshi Basu
    Nov 22 '18 at 10:15
















Refer to stackoverflow.com/a/53015144/1235935 for complete Java encryption and decryption code with explanations
– Saptarshi Basu
Nov 22 '18 at 10:15




Refer to stackoverflow.com/a/53015144/1235935 for complete Java encryption and decryption code with explanations
– Saptarshi Basu
Nov 22 '18 at 10:15












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53408877%2fjava-decryption-aes-cbc-pkcs5padding-with-cryptojs-encryption%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53408877%2fjava-decryption-aes-cbc-pkcs5padding-with-cryptojs-encryption%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Create new schema in PostgreSQL using DBeaver

Deepest pit of an array with Javascript: test on Codility

Costa Masnaga