快速业务通道

用Kerberos为J2ME应用程序上锁,第2部分 - 生成一个Kerberos票据请求 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
         for (int a = 0; a <8; a ++)            blockValue2[a] = (byte) ((((byte)blockValue2[a] & 0xff)  >>> 1) & 0xff);          System.arraycopy(blockValue2, 0, blockValue1, 0,  blockValue2.length);        }//if(x % 2 == 1)        for (int a = 0; a <8; a ++)          blockValue1[a] = (byte) ((((byte)blockValue1[a] & 0xff)  << 1) & 0xff);        //Step 6:        for (int b = 0; b <8; b ++)          secretKey[b] ^= blockValue1[b];      }// for      //Step 7:      secretKey= setParity(secretKey);      //Step 8:      if (isWeakKey(secretKey))        secretKey = getStrongKey(secretKey);      //Step 9:      secretKey = getFinalKey(paddedByteArray, secretKey);      //Step 10:      secretKey = setParity(secretKey);      if (isWeakKey(secretKey))        secretKey = getStrongKey(secretKey);      return secretKey;    }//generateKey    public byte[] getFinalKey (byte data[], byte key[])    {      //The cipher instance with DES algo and CBC mode.      cipher = new CBCBlockCipher( new DESEngine());      kp = new KeyParameter(key);      iv = new ParametersWithIV (kp, key);      cipher.init(true, iv);      byte encKey[] = new byte[data.length];      byte ivBytes[] = new byte[8];      for(int x = 0; x < data.length / 8; x ++)      {        cipher.processBlock(data, x*8, encKey, x*8);        System.arraycopy(encKey, x*8, ivBytes, 0, 8);        iv = new ParametersWithIV (kp, ivBytes);        cipher.init (true, iv);      }      return ivBytes;    }//getFinalKey    public byte[] setParity (byte byteValue[])    {      for(int x=0; x<8; x++)        byteValue[x] = parityValues[byteValue[x] & 0xff];      return byteValue;    }    // Checks weak key    public boolean isWeakKey (byte keyValue[])    {      byte weakKeyValue[];        for(int x = 0; x < weakKeyByteValues.length; x++)        {          weakKeyValue = weakKeyByteValues[x];          if(weakKeyValue.equals(keyValue))            return true;        }      return false;    }//isWeakKey   // Corrects the weak key by exclusive OR with 0xf0 constant.    public byte[] getStrongKey(byte keyValue[])    {      keyValue[7] ^= 0xf0;      return keyValue;    }//checkWeakKey    // Encodes string with ISO-Lation encodings    public byte[] encodeString (String str)    {      byte encodedByteArray[] = new byte[str.length()];      try      {        encodedByteArray = str.getBytes("8859_1");      }      catch(java.io.UnsupportedEncodingException ue)   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号