文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在Java项目中实现一个DES加密算法

2023-05-31 13:04

关注

如何在Java项目中实现一个DES加密算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Base64.java

package com.mstf.des; import java.io.UnsupportedEncodingException; public class Base64 {   public static String encode(String data) {    return new String(encode(data.getBytes()));  }   public static String decode(String data) {    try {      return new String(decode(data.toCharArray()),"utf-8");    } catch (UnsupportedEncodingException e) {      e.printStackTrace();      return null;    }   }   private static char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="      .toCharArray();   private static byte[] codes = new byte[256];   static {    for (int i = 0; i < 256; i++) {      codes[i] = -1;    }    for (int i = 'A'; i <= 'Z'; i++) {      codes[i] = (byte) (i - 'A');    }     for (int i = 'a'; i <= 'z'; i++) {      codes[i] = (byte) (26 + i - 'a');    }    for (int i = '0'; i <= '9'; i++) {      codes[i] = (byte) (52 + i - '0');    }    codes['+'] = 62;    codes['/'] = 63;  }   public static char[] encode(byte[] data) {    char[] out = new char[((data.length + 2) / 3) * 4];    for (int i = 0, index = 0; i < data.length; i += 3, index += 4) {      boolean quad = false;      boolean trip = false;       int val = (0xFF & (int) data[i]);      val <<= 8;      if ((i + 1) < data.length) {        val |= (0xFF & (int) data[i + 1]);        trip = true;      }      val <<= 8;      if ((i + 2) < data.length) {        val |= (0xFF & (int) data[i + 2]);        quad = true;      }      out[index + 3] = alphabet[(quad &#63; (val & 0x3F) : 64)];      val >>= 6;      out[index + 2] = alphabet[(trip &#63; (val & 0x3F) : 64)];      val >>= 6;      out[index + 1] = alphabet[val & 0x3F];      val >>= 6;      out[index + 0] = alphabet[val & 0x3F];    }    return out;  }   public static byte[] decode(char[] data) {    int tempLen = data.length;    for (int ix = 0; ix < data.length; ix++) {      if ((data[ix] > 255) || codes[data[ix]] < 0) {        --tempLen;      }    }    int len = (tempLen / 4) * 3;    if ((tempLen % 4) == 3) {      len += 2;    }    if ((tempLen % 4) == 2) {      len += 1;     }    byte[] out = new byte[len];     int shift = 0;    int accum = 0;    int index = 0;     for (int ix = 0; ix < data.length; ix++) {      int value = (data[ix] > 255) &#63; -1 : codes[data[ix]];       if (value >= 0) {        accum <<= 6;        shift += 6;        accum |= value;        if (shift >= 8) {          shift -= 8;          out[index++] = (byte) ((accum >> shift) & 0xff);        }      }    }     if (index != out.length) {      throw new Error("Miscalculated data length (wrote " + index          + " instead of " + out.length + ")");    }     return out;  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯