From e54245f871af8a297e7ec85c230312174317327e Mon Sep 17 00:00:00 2001 From: Carl <376654749@qq.com> Date: Fri, 24 Dec 2021 12:25:39 +0800 Subject: [PATCH] fix AES decode --- .../royalcanin/good/service/GoodService.java | 4 +- .../net/lab1024/smartadmin/util/AESUtil.java | 39 +++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java index 20b45961..b2d455b4 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/good/service/GoodService.java @@ -31,7 +31,7 @@ public class GoodService { paramMap.put("channelId","15"); String sb = SmartHttpUtil.sendPostForm(url+"product/query",paramMap,null); JSONObject jsonObject = JSONObject.parseObject(sb); - String result = AESUtil.decrypt(jsonObject.getString("data"), AESUtil.KEY); + String result = AESUtil.decryptLinux(jsonObject.getString("data"), AESUtil.KEY); return result; } @@ -42,7 +42,7 @@ public class GoodService { paramMap.put("channelId","15"); String sb = SmartHttpUtil.sendPostForm(url+"productMaster/query",paramMap,null); JSONObject jsonObject = JSONObject.parseObject(sb); - String result = AESUtil.decrypt(jsonObject.getString("data"), AESUtil.KEY); + String result = AESUtil.decryptLinux(jsonObject.getString("data"), AESUtil.KEY); return result; } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/AESUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/AESUtil.java index 8551402e..cf0d164e 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/AESUtil.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/AESUtil.java @@ -14,8 +14,7 @@ import org.apache.commons.lang3.StringUtils; * */ public class AESUtil { -// private static final String defaultCharset = "UTF-8"; - private static final String defaultCharset = "GBK"; + private static final String defaultCharset = "UTF-8"; private static final String KEY_AES = "AES"; public static final String KEY = "H5@2021"; @@ -93,6 +92,39 @@ public class AESUtil { return null; } + /** + * 解密 + * + * @param content 待解密内容 + * @param key 解密的密钥 + * @return + */ + public static String decryptLinux(String content, String key) { + if (content.length() < 1) return null; + byte[] byteRresult = new byte[content.length() / 2]; + for (int i = 0; i < content.length() / 2; i++) { + int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16); + int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16); + byteRresult[i] = (byte) (high * 16 + low); + } + try { + KeyGenerator kgen = KeyGenerator.getInstance(KEY_AES); + SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + random.setSeed(key.getBytes(defaultCharset)); + kgen.init(128, random); + SecretKey secretKey = kgen.generateKey(); + byte[] enCodeFormat = secretKey.getEncoded(); + SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, KEY_AES); + Cipher cipher = Cipher.getInstance(KEY_AES); + cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); + byte[] result = cipher.doFinal(byteRresult); + return new String(result, defaultCharset); + } catch (Exception e) { + e.toString(); + } + return null; + } + /** * 将二进制转换成16进制 * @@ -136,7 +168,8 @@ public class AESUtil { System.out.println("加密密钥和解密密钥:" + KEY); String encrypt = "C98174A5A099183A55630002D064B9CFBC3CCA4C01CA5DED75207A175FAE8E85F2D5F6F04907ADEAF008B6E80915814F900B378A3DBC1054BB6EE1DF9E356126C34F7EB19277D095637C3DFF6034B7797362C9FCEAE8A2E53E0C4824C2716C97FAAA722986D4AA95D4A381DB2515C4A7D3BFA7D7AEE174E9E6335B508957233947894D400BD03481B820A20F4599978147853262576A48112CA53368466E365068206CBF3408519D4AE6B423C70F7F361643D3E43A2B7509601D767CD7C8E2358044F38EFBC367A1484141AAD09D095DB2BED3484D4607A250D5BA2157077F00E60C467A7E07D2885519A33CDBB87F7FA0AD85E7C0A3615CE7300DB38C409168D9689BC42C1C7EBFE5F71641A9B96BFBC20A61AD6BB0C1127B3D30CBD4017D5B8C3EB659FFB0321DCF18A6530E47020D8279D52D637CBA9AFF8E20ECEBF475192D267F79DB2177D262F3059F706CD071B1F4A671813D1BCC9554A0A7940D17C80E4D91AA0EACB8E285003028CCFAF6087AB9146D588C5176BFA8848872E48FD517E7A8071F0AEED2759568DC437EC2CCB8682F62F7DC028096F70C1835052B232136516786C5A20C92BFE0A6BDD7D6B241E820E8F7C1140605E97A950BCEF46A0E194868BEE9A81703843872521B0F1C4B9EBE85742E50859BCD5F8593B0D9D41BD71DE6C65D0BBA825867926D3AB99EC946A64EA9C350FCD7748A5E6A8125A81FEAE1F470A316621DCFFB62C513AFB2E8EEB09131E3E3A48A10747597EECD100233DEE264A51AEEF82047C41D60BC584BA79948C7A32DA4ACE66C245E1D65E9C4A2020092B98243C67B973DBA5A813F291B87EA0F9786B761DAEF52CFABFA7BC0762986E3B083B9AB7D83A1D2488DE2099BED8D242A5074D95BEC7DBDD58E122C2449DDA8D4D368172E19DF5F0F94ACB85BD8117DC68440F2DE0598BC29B11DA68B492C78B7D5A3BE421268730B9DEB4503E779891BBDAFF659486DB0AC172F95C6D4D375C749A70074B99546CB3A90494D1834910FB76AED0734E6806F9D2AABD525A960E65251C3F85EB5D5E197808BED7E084C0254F7A23F79F2E6071674110BF7F5C69BD9C4D63B04D19CEA5914C9269142FD35A1A96DE5F7C7DE0B038D79FFB0FC2707B6141466199FD4947F11957C5F740883F3614688D83D3804AEF22D181689898124495BF4271637A034333E1F7074AE304FD3B1BF792985B7B940BB379049350A28D7690C6EA8ACEC01B7588BAAEAB654475229E750BEDB3DD67AA180128C7EFE941ABDD182277ACD64DD9B30B3FE84EBA4CF445DD1074713B4C9154BF15F63EEA5819A00BB20ED68ED602ED7A78FDA2FD63E3815DA6B11087C7F4D3FE7831A9E16AD9F43AE3AD5FAB6326F775C071A9B2283000AB02BE3783AC6EE03956C29061F4D5129C9A74B257F50ACA0D1F08732D9D9826239299D5651187B5D416F67D1AB8787E3EF591F8448AC8044F38EFBC367A1484141AAD09D095DB2BED3484D4607A250D5BA2157077F00E60C467A7E07D2885519A33CDBB87F7F5EF65034F632732B9AAA7216F550D7EBC15FE21E9CE0BBA8A66BA362AF7BE082F3CDAA4F24C72003C15D8BCEF1B69DA21B3F89E8EA1FBC7E56E6C3014D71C3DCF2CCCB96A0F1B0ABDE43B16FE51A59B746F3885FA065408B0A3B90A15541835867003D82E97DDFBBEC8FAE2443B7CFB5925B511AA7700FA2AAEC99100631F99E070758A755AD5A1F6A6BC3B7D611C3403FDAB74DC3B4FF110BB1A07BE4FAFE64FDB2BC3ECF48A8B085D667CAB68FF8C74176B99BD70E06313167A41CF46FDB6AB2D8338E81EE13329709FE0E0FD39D038330F0D97050E7180AF462152B93FAC0D4177B6FF517D5F3B41686EF32D0CCB6E8DBD77A96E045F69DE10A26BAF7D9DAACB32140B43B84D9A2656E1A5FC93F6E1B3DC10996EB87E500C3DB33E806160271E7E3FDCDB869F4EFC2A0CBE0995EEA46EBCBC9EB6CD518DFFED4C4F6798E86573BE523677D2FF38EE6695FC202C82C816C87DCA3CCEB581A820280FA60B6BE25B13EB68F20C3CD2B05660DC964CEAE51AA25D14BDD78EC94FB0AAFA7101600915CDB367A96D167FAF3E6CF63A468455E6CB8C2B799046EA9314C8883E84B11B85BD8117DC68440F2DE0598BC29B11D10B9DE3DB372BB64186D0A1B75CACC110DCBE0A55FEE2FE3F062337DCD0A30255DD8AE42EE89C31929CF4BA4A940CEC24E3AA095FB9F06D43162DA6748FEF3634ACE74BF6A4C29C1C6C6DF8E060154C2B7EACB40A0C4F25E2867F513603803B92F11690103F26AF2759AA796EA71F7BEA34EA5CE158E9FB72B2D276E2172556542B6FAF5D8CB1BD68D0B6046CF14A6B1387BDEA6A8EDAB613C9B26C2040FD23E89FEB58C4058E64DEF62D6C5AD6DD12EC5ACDCF002CE0C7100C46BEC17386ED1792B43CBEC444A4A36126DE817C0B9AC82BFC561AD0D8D76DBC29CC4BD7DA40E703877B6E15D4E6AEEF3B522DA0D24808EBCD65FDAB5AA75ED1A27ABA1221F929BAFC8DFB40264A208A7E4D77EBB38E7B9555A6F3113D9FFF4B82D8AE4D271995F438AFF9AAF8F904C1EA0006A1BD44605839A28A3E471ABBDC5A8859BD954CCB036D5F7A891A07565300038EB7AA95B080C97300C5387E1B147F98AC92A13A78BED7E084C0254F7A23F79F2E6071674110BF7F5C69BD9C4D63B04D19CEA5914C9269142FD35A1A96DE5F7C7DE0B038D05B71E6F7BF06722BADBE59869D89156F0AA223D6CADA607854FB9B3C598CF9060A1A50FC67882224D4A28663504705581BC765325CA7303B61CA3D1D42F0D304A822BF6B9315331243FE915AFD04E542DEAFC7F454D2454BE7A667E006FB11C23C84A1F3207FBEBB0F73AB0B124B5B22E19C61E11B9518EB931F0F4DCEFA84B27A06F6A9A39B1B3690ABD60DDF35EFC411A5512A853FDCC7F8FE8AD6763BFE5C8793A6B4EEAE04ADF84157BC5F6D0E5B2D8338E81EE13329709FE0E0FD39D034BC60D82CE4E31A1ECF4A9F170BBA5F41AD233924F060A4F491A28B94F414E9ABB817C9E3945A3217406D0006C3CA764E47ECD33299122002E1A1E4C8B393884D79E6C735163FE8ED73AD7260A5610E62E623506BF04A222AD57C0447E1A0E755301D3C9807EB16D99A849D5D5201B162BC90B613FD4B64A8E9A7ECF060743BB9102EA47003538B1FA76841EA4001A0E3EDADECC58FEDD38787C647CB389E178C686B322CFBD19AFE300D85ACEACA04B470CCAA607C6845454B44D10A2FEEFA89E675758D1003BEC5BAEF40212C37FB44349B91D9EFD65355F2FC533097BF052A6FCF0FB77928B802E83304CEAD65C88B6D5CFEEEFE049AD386FBF1742C8AE28FD01C80742A9B79B6426AA6348AF6AA84101E7280F34CF68C666E79613147775584A7F08D595C7049EB89063C5968AD32A98D279600B7D7350598C455ECEEED1857510FD264C59011FA84029E10E69C965C59842BFFE85C18C99FC25249D7A4D5034BEB4B80C2508805FFE577A8630E9BC3E8B039216013F5FC955F8261E9C064B1CBC045A020B40327F68DAF028262629E71517BB326F193D362B82FBB1304A00A69503803B4D594A18F8F167534013FD29732079DC7509FB832090980F402F09D4ACE5B2B4954428084D87B9B339A2DF49D2B4DB06F58C510CD6ABBC9CD7ABDE57C3E7D5733318424A1E5AD31D6CD556FC78903D078902680377423CCC7B69372262BF4BF585085E03EFEF6B39594A1EC88C4B2A96C096A9502FEE38DA52232E623506BF04A222AD57C0447E1A0E756E5D1DC07ADB789182ACE4D04CA955A60F11B0E316231C2917E663AA33C24E18949B39A225B540AC6A5B06BCB3BE99F86557D8AD54FC30E33F26FED241FE8DB32B95DA30F8D08B5EEDE8472067BD1EE88DFA76D9A7BEF836F55C887F07799B83FF1CB11046008B09ED7F19AD1F65892B910A63CB953E139EBB41A089CF9F598F2856AC53D99AB9EE15D58649C118F508E02246CEAD6AF5FFA37FDC6CD1EF44AC4E361139EF13296D08CEB33A4ECD456D9E82EE78E860DED779AAF0E5E6428D72771C322044186E4AD54523409E8F42F16A6C57DD9278FFA504C4F60BBB888A731E8991DCDA68F03557C4A20434A5B6ED2A44E4319FCB443650C45A5035A0C172F4F4477AD8FF60579665F17F6C71E7EC20D1B696F1B41F465A488B70D50AEACD0934CE23067D26088BEC0D6CC2F446555673CAAE3A9FE369746C7AF47376C382281B5C5BEA962EDB1382116AC3D58791E18407126A38867EB61D528AC4CE78CB1EA7886CC93976C4482C59010CC08341752FD9972A1419E97440ADE8DDAA9B2F8044F38EFBC367A1484141AAD09D095D1DA099B13EE1F2ABE1F9ACE15D4B4F76DE39C77C5377E6A478AE076B0347931DBD9A0F5D6C7C1A9791BB689DEA9EA34D4B014BE8F8A5D922A57B075593D02801F7397A66C6F30A4BC0F050CD809035D542FB57CCF9581FB5859EF65F4D7A64B0DEF76A1856F30F06A6807808A55CD02F1E8D0611FD4AE993CD5682940AAD2F2E86EA7EF55FA5F4C017AD655ED2B613D92C70C95F6C180414FAA7DB35F704DC64DF82D4F95F5F9A98CCEAD39BA29200415D0E9D6B4880F9E7BAD391B312EA87B491E704AD70C1DBA19BA902953BBA772FB4AC7BD0EE66AEB696953A1417DD8BF733662A8B953BCCF40774A7C9EB9671D45507D9DF9F529DC4117D767B043F60DF82AE5D4C9C2CD67D34628478B19EACB8A673490375D113A4A2845D83CF73CBC3F9EFB7DDF23CA937693A19F40BD1E6B7";//encrypt(content, KEY); System.out.println("加密后:" + encrypt); - String decrypt = decrypt(encrypt, KEY); +// String decrypt = decrypt(encrypt, KEY); + String decrypt = decryptLinux(encrypt, KEY); System.out.println("解密后:" + decrypt); } }