`
liudaoru
  • 浏览: 1576062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

个人的一个小的Base64实现尝试

    博客分类:
  • java
阅读更多
由于种种问题只实现了一般,以后继续实现吧:)

public class Base64T {

	public static final char[] base64_alphabet = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
			'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
			'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2',
			'3', '4', '5', '6', '7', '8', '9', '+', '/', '=' };

	/**
	 * 读取数据3字节用AND取前6位,放入新的变量中右移两位,
	 * 高两位清0AND取第一个字节的后2位和第二个字节的前4位
	 * 移位放入新变量中右移两位,清0……依此类推。
	 * 
	 * @param bytes
	 */
	public static void encode(byte[] bytes) {

		int len = (int) Math.ceil(bytes.length / 3) + 1; //按照3个字符进行分组的分组数
		int[] buf = new int[4];
		byte[] temp = new byte[3];
		p(len);
		for (int i = 0; i < len; i++) {
			int base = i * 3;
			//需要处理补全字符 ==
			for (int j = 0; j < 3; j++) {
				if (i == len - 1 && base + j > bytes.length - 1) {
					temp[j] = (byte) 0x00;
				} else {
					temp[j] = bytes[base + j];
				}
			}
			buf[0] = (((int) temp[0]) >>> 2);
			buf[1] = ((temp[0] & 0x03) << 4 | (((int) temp[1]) >>> 4));
			buf[2] = ((temp[1] & 0x0f) << 2 | (((int) temp[2]) >>> 6));
			buf[3] = (temp[2] & 0x3f);
			for (int j = 0; j < 4; j++) {
				p(base64_alphabet[buf[j]] + "");
			}
		}

	}

	public static void main(String[] args) {
		String s = "cccc";
		Base64Trs.encode(s.getBytes());
		System.out.println(Base64Util_Temp.encode(s));
	}

	//	private static byte lMoveByte(int base, int moveNum) {
	//		byte result = (byte) base;
	//		if (moveNum <= 0) {
	//			return 1;
	//		} else if (moveNum == 1) {
	//			return result;
	//		}
	//
	//		return (byte) (result << moveNum);
	//	}

	private static void p(String s) {
		System.out.println(s);
	}

	private static void p(int s) {
		System.out.println(s);
	}
}
分享到:
评论

相关推荐

    Asp.net中实现同一用户名不能同时登陆

    在实际的应用场景中,如果一个用户在一个终端登录了系统后,在另一个终端再次使用相同的用户名进行登录,这时候就需要考虑到安全性问题。例如,在银行系统或者一些重要的管理系统中,如果允许同一个账户在不同终端...

    android_frameworks_base,.zip

    在Android系统中,`android_frameworks_base`是一个至关重要的组件,它是Android操作系统的核心框架层,包含了各种服务、接口和系统级别的组件。这个开源项目是Android开发人员深入理解Android系统运行机制的关键...

    C++编写登录与注册

    - 首先尝试打开一个名为 `web1.txt` 的文本文件,用于保存用户信息。 - 如果文件无法打开,则提示错误并退出程序。 - 提示用户输入用户名和密码,并将其写入文件。 - 注册成功后,再次调用 `Display` 函数以显示...

    数据结构栈的表示与实现 课程设计

    - **InitStack**: 构造一个空栈,通过动态内存分配为栈分配初始空间。 - **DestroyStack**: 销毁栈,释放所占内存,栈不再存在。 - **ClearStack**: 清空栈,将 `top` 指针重置为 `base`,使栈回到初始状态。 - ...

    SelectCamera-master:两种相机相册截取正方形图片窗口-方式1:系统相机+相册弹窗选择->自定义图片剪裁->圆形ImageView显示,包含图片存储,base64上载,自定义控件注解,imageloader方式2 :弹窗显示图片快照+相机选择->系统图片剪裁->查看详情弹窗->上传(未实现)等。经过真机测试,5.0版本一下使用正常,6.0以上使用会有各种问题(例如:后置相机个数没做处理,但是框架模式很好,欢迎使用者自己更新)推荐使用https

    《Android相机与相册集成实践:SelectCamera-master详解》 在Android应用开发中,相机与相册功能是不可或缺的一部分,用户通常需要...如果你正在寻找一个快速集成相机和相册功能的库,"SelectCamera-master"值得尝试。

    jEdit_base:来自伪造的个人jEdit副本

    jEdit_base是一个个人版本的jEdit,它是基于开源的、跨平台的文本编辑器jEdit。jEdit最初由Jens Wilke开发,是一款针对程序员和高级用户的强大编辑器,支持多种编程语言,并提供了丰富的功能和插件系统。这个"jEdit_...

    AddressBase-开源

    **AddressBase 开源项目详解** AddressBase 是一个创新的开源项目,它利用JavaScript宏技术对...无论你是个人用户,还是小型企业,AddressBase都是一个值得尝试的选择,它能帮助你更好地管理和组织你的联系人信息。

    微信小程序实现人脸识别登陆的示例代码

    在微信小程序中实现人脸识别登录是一种安全且便捷的身份验证方式,结合了微信的用户基础和人脸识别技术,例如百度云的人脸识别接口。以下是如何在微信小程序中实现这一功能的详细步骤和涉及的技术点: 1. **注册与...

    试用期设置.rar

    注册表是Windows操作系统中的一个重要数据库,存储了系统和应用程序的设置。开发者可以在注册表中创建特定的键值来记录试用信息,如剩余天数或使用次数。然而,直接操作注册表可能会面临安全风险,因为用户可以通过...

    图形学实验报告(梅洛瑜)1

    物体移动和旋转两种漫游方式按钮背后原理是,设计了两个 tick()函数,一个 tick1()控制物体动+相机动,另一个 tick2()控制物体运动。 物体移动为了实现物体运动,设置了 go()按钮,背后的逻辑是设定相应的运动方程...

    android-rsa-http

    这通常涉及字符串转为字节数组,使用公钥进行加密,然后将加密后的字节数组转回为可传输的字符串格式,如Base64编码。发送HTTP请求时,将加密后的URL路径部分附加到请求URL上。 在服务器端,收到加密的URL后,使用...

    boa-0.94.13.tar.gz

    boa服务器是开源的Web服务器,其版本 boa-0.94.13.tar.gz 是一个压缩包文件,通常用于在Linux或类Unix系统上分发软件。这个版本的 boa 服务器引入了用户登录验证功能,这是一项重要的安全特性,旨在保护服务器资源不...

    Simple PHP Base-开源

    Simple PHP Base 是一个轻量级的PHP应用程序,它旨在为初学者和小型项目提供基础的用户管理和登录系统。这个开源项目采用了mod_rewrite技术,优化了URL结构,提升了用户体验。它尝试实现了MVC(Model-View-...

    90sec通关活动过程报告.pdf

    这个“90sec通关活动”似乎是一个渗透测试的实战练习平台,旨在帮助参与者提升在这些领域的技能。 第一关主要涉及到上传文件的漏洞。在某些情况下,某些网站可能允许用户上传任意文件,如果未进行严格的文件类型...

    pc样本学习笔记之恶意程序常用伪装手段分析.docx

    在某些情况下,恶意软件可能会将一个PE(Portable Executable)文件隐藏在另一个PE文件内部。这意味着,在主PE文件中实际上包含了一个或多个其他可执行文件。为了提取这些隐藏的PE文件,通常需要使用专门的工具进行...

    几个有意思的客户端漏洞 - weixin_30685047的博客 - CSDN博客1

    此外,对于博客文章中提到的Base64加密密码,虽然比明文存储有所改进,但Base64并不是一种安全的加密算法,因为它可以轻易地被解码。因此,应当使用更强大的加密算法,如AES(高级加密标准),并配合适当的盐值和...

    安卓IOS风格相关-仿苹果三级联动选择地址.zip

    3. **Android_wheel**:这是一个可能包含实现轮播选择效果的库或组件。在iOS的三级联动选择中,往往使用轮播样式来展示各个级别的选择项,这样既美观又节省屏幕空间。在安卓中,开发者可能需要自定义View或者使用第...

    php实现的短网址算法分享

    将这个哈希值转换为一个base32格式的字符串,因为base32字符集比十六进制字符集小,所以可以通过对原始哈希值进行分组,每组5个比特(因为32 = \(2^5\)),然后将每组转换为对应base32字符集中的一个字符来实现长度...

    Java面试题(面向对象)

    “has-a” 关系则表示一个类拥有另一个类的对象作为其成员,例如一个人拥有一颗心,这可以通过类的成员变量来实现。 - **D**:`this` 关键字用于指向当前对象实例,这在构造函数和其他方法中非常有用,以确保正确地...

    go-training:用树形的方式合理地组织知识点,并为每一个知识点配置可直接编译运行的go源代码

    一是每一个文章,站点都是介绍一个方面,缺乏一个整体上的视角。二是学习完了之后不练习的话,基本一周后就忘的差不多了。 所以我把我个人的学习,练习过程逐步项目整理发布了出来。 用树形的方式进行尝试合理地组织...

Global site tag (gtag.js) - Google Analytics