⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desparameters.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
字号:
package org.bouncycastle.crypto.params;public class DESParameters    extends KeyParameter{    public DESParameters(        byte[]  key)    {        super(key);        if (isWeakKey(key, 0))        {            throw new IllegalArgumentException("attempt to create weak DES key");        }    }    /*     * DES Key length in bytes.     */    static public final int DES_KEY_LENGTH = 8;    /*     * Table of weak and semi-weak keys taken from Schneier pp281     */    static private final int N_DES_WEAK_KEYS = 16;    static private byte[] DES_weak_keys =    {        /* weak keys */        (byte)0x01,(byte)0x01,(byte)0x01,(byte)0x01, (byte)0x01,(byte)0x01,(byte)0x01,(byte)0x01,        (byte)0x1f,(byte)0x1f,(byte)0x1f,(byte)0x1f, (byte)0x0e,(byte)0x0e,(byte)0x0e,(byte)0x0e,        (byte)0xe0,(byte)0xe0,(byte)0xe0,(byte)0xe0, (byte)0xf1,(byte)0xf1,(byte)0xf1,(byte)0xf1,        (byte)0xfe,(byte)0xfe,(byte)0xfe,(byte)0xfe, (byte)0xfe,(byte)0xfe,(byte)0xfe,(byte)0xfe,        /* semi-weak keys */        (byte)0x01,(byte)0xfe,(byte)0x01,(byte)0xfe, (byte)0x01,(byte)0xfe,(byte)0x01,(byte)0xfe,        (byte)0x1f,(byte)0xe0,(byte)0x1f,(byte)0xe0, (byte)0x0e,(byte)0xf1,(byte)0x0e,(byte)0xf1,        (byte)0x01,(byte)0xe0,(byte)0x01,(byte)0xe0, (byte)0x01,(byte)0xf1,(byte)0x01,(byte)0xf1,        (byte)0x1f,(byte)0xfe,(byte)0x1f,(byte)0xfe, (byte)0x0e,(byte)0xfe,(byte)0x0e,(byte)0xfe,        (byte)0x01,(byte)0x1f,(byte)0x01,(byte)0x1f, (byte)0x01,(byte)0x0e,(byte)0x01,(byte)0x0e,        (byte)0xe0,(byte)0xfe,(byte)0xe0,(byte)0xfe, (byte)0xf1,(byte)0xfe,(byte)0xf1,(byte)0xfe,        (byte)0xfe,(byte)0x01,(byte)0xfe,(byte)0x01, (byte)0xfe,(byte)0x01,(byte)0xfe,(byte)0x01,        (byte)0xe0,(byte)0x1f,(byte)0xe0,(byte)0x1f, (byte)0xf1,(byte)0x0e,(byte)0xf1,(byte)0x0e,        (byte)0xe0,(byte)0x01,(byte)0xe0,(byte)0x01, (byte)0xf1,(byte)0x01,(byte)0xf1,(byte)0x01,        (byte)0xfe,(byte)0x1f,(byte)0xfe,(byte)0x1f, (byte)0xfe,(byte)0x0e,(byte)0xfe,(byte)0x0e,        (byte)0x1f,(byte)0x01,(byte)0x1f,(byte)0x01, (byte)0x0e,(byte)0x01,(byte)0x0e,(byte)0x01,        (byte)0xfe,(byte)0xe0,(byte)0xfe,(byte)0xe0, (byte)0xfe,(byte)0xf1,(byte)0xfe,(byte)0xf1    };    /**     * DES has 16 weak keys.  This method will check     * if the given DES key material is weak or semi-weak.     * Key material that is too short is regarded as weak.     * <p>     * See <a href="http://www.counterpane.com/applied.html">"Applied     * Cryptography"</a> by Bruce Schneier for more information.     *     * @return true if the given DES key material is weak or semi-weak,     *     false otherwise.     */    public static boolean isWeakKey(        byte[] key,        int offset)    {        if (key.length - offset < DES_KEY_LENGTH)        {            throw new IllegalArgumentException("key material too short.");        }        nextkey: for (int i = 0; i < N_DES_WEAK_KEYS; i++)        {            for (int j = 0; j < DES_KEY_LENGTH; j++)            {                if (key[j + offset] != DES_weak_keys[i * DES_KEY_LENGTH + j])                {                    continue nextkey;                }            }            return true;        }        return false;    }    /**     * DES Keys use the LSB as the odd parity bit.  This can     * be used to check for corrupt keys.     *     * @param bytes the byte array to set the parity on.     */    public static void setOddParity(        byte[] bytes)    {        for (int i = 0; i < bytes.length; i++)        {            int b = bytes[i];            bytes[i] = (byte)((b & 0xfe) |                            ((((b >> 1) ^                            (b >> 2) ^                            (b >> 3) ^                            (b >> 4) ^                            (b >> 5) ^                            (b >> 6) ^                            (b >> 7)) ^ 0x01) & 0x01));        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -