Path: blob/master/test/jdk/com/sun/crypto/provider/Cipher/DES/DESSecretKeySpec.java
41161 views
/*1* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 675570126* @summary Change SecretKeyFactory.generateSecret to allow SecretKeySpec to27* be passed and used for creating a DES and DESede keys. This avoids the error28* of "InvalidKeySpecException: Inappropriate key specification"29* @author Anthony Scarpino30*/3132import javax.crypto.Cipher;33import javax.crypto.SecretKeyFactory;34import javax.crypto.spec.SecretKeySpec;3536public class DESSecretKeySpec {3738public static void main(String arg[]) throws Exception {39Cipher c;40byte[] key = new byte[]{'1','2','3','4','5','6','7','8',41'1','2','3','4','5','6','7','8',42'1','2','3','4','5','6','7','8'};434445System.out.println("Testing DES key");46SecretKeySpec skey = new SecretKeySpec(key, "DES");47c = Cipher.getInstance("DES/CBC/PKCS5Padding", "SunJCE");48SecretKeyFactory.getInstance("DES", "SunJCE").generateSecret(skey);4950System.out.println("Testing DESede key");51skey = new SecretKeySpec(key, "DESede");52c = Cipher.getInstance("DESede/CBC/PKCS5Padding", "SunJCE");53SecretKeyFactory.getInstance("TripleDES", "SunJCE").generateSecret(skey);54}55}565758