質問するログイン新規登録

質問編集履歴

1

DESで復号したソースに修正

2020/02/17 04:29

投稿

fishStory
fishStory

スコア10

title CHANGED
File without changes
body CHANGED
@@ -95,4 +95,60 @@
95
95
  参考:[ttps://itdogkuwaccho.hatenadiary.com/entry/2017/11/12/125140](https://itdogkuwaccho.hatenadiary.com/entry/2017/11/12/125140)
96
96
 
97
97
 
98
- 以上、よろしくお願いします。
98
+ 以上、よろしくお願いします。
99
+
100
+ ##2020/2/17追記
101
+
102
+ DES形式でソースを修正しました。
103
+ ```java
104
+ public static void main(String[] args) {
105
+
106
+ String key = "foobar00";
107
+ String origin = "hoge";
108
+ String enc = "U2FsdGVkX19eAkcLovbInztwfaMnjKwZ";
109
+
110
+
111
+ try {
112
+ /*
113
+ * 鍵
114
+ */
115
+ // 秘密鍵を準備
116
+ byte[] kagi = key.getBytes();
117
+ DESKeySpec dk = new DESKeySpec(kagi);
118
+ Arrays.fill(kagi, (byte)0x00); // セキュリティ情報を上書きして削除
119
+ SecretKeyFactory kf = SecretKeyFactory.getInstance("DES");
120
+ SecretKey sk = kf.generateSecret(dk);
121
+
122
+
123
+ Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
124
+ cipher.init(Cipher.DECRYPT_MODE, sk);
125
+ Cipher c = Cipher.getInstance("DES");
126
+
127
+ //暗号化されたStringをデコード
128
+ byte[] enc_decode = Base64.getDecoder().decode(enc.getBytes());
129
+
130
+ //復号
131
+ byte[] output2 = c.doFinal(enc_decode);
132
+
133
+
134
+ // 表示
135
+ System.out.println("The string was ");
136
+ System.out.println(new String(output2));
137
+
138
+
139
+ } catch (Exception e) {
140
+ e.printStackTrace();
141
+ }
142
+ }
143
+
144
+ ```
145
+ #実行結果
146
+ 上記のソースを実行すると、下記エラーがでます。
147
+
148
+ > javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
149
+ at java.base/com.sun.crypto.provider.CipherCore.unpad(CipherCore.java:975)
150
+ at java.base/com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1056)
151
+ at java.base/com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:853)
152
+ at java.base/com.sun.crypto.provider.DESCipher.engineDoFinal(DESCipher.java:314)
153
+ at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202)
154
+ at com.example.demo.test2.main(test2.java:133)