首页 > 编程知识 正文

安卓逆向破解教程,android逆向教程

时间:2023-05-05 15:54:09 阅读:127458 作者:2872

一、Base64

1、所有数据都可以编码为可以用65个字符表示的文本。

的标准Base64每行包含76个字符,每行末尾添加换行符rn。 添加换行符,无论每行的长度是否超过76个字符。

2,65个字符: A~Z a~z 0~9 /=

在URL Base64算法中,为了安全起见,用-、用/替换

有时用=~和.代替

3、Base64的应用

密钥、密文、图像和数据的简单加密或预处理

4、常规Base64编码和解码

package com.company; import Java.nio.charset.standard charsets; import java.util.Base64; import java.util.zip.Deflater; public class main { publicstaticvoidmain (string [ ] args ) { System.out.println ('相反有你'); String bs='相反,你所在的a '; String enbs=Base64.getEncoder ().encode tostring (bs.getbytes ) Standardcharsets.utf_8) ); System.out.println ('相反有你的base64代码: ' enbs ); 字符串debs=new string (base64.get decoder ().decode(enbs ) ); System.out.println; }驾驶结果:反向有你,反向有你,base64码:6YCG5ZCR5pyJ5L2gYQ==反向有你,base64码:反向有你,你就是a

二、自己编写Base64算法

1、新建java类

2、源代码如下

package com.company; publicclasszbase 64 { privatestaticfinalchar [ ] base64 byte tostr={ ' a '、' b '、' c '、' d '、' e '、' f '、' g '、' u、v、w、x、y、z、0、1、2、3、4、6、7、8、9 私密性staticbyte [ ] strto base64 byte=new byte [ 128 ]; publicstaticstringbase 64编码(byte [ ] bytes ) stringbuilder RES=new stringbuilder ); for(intI=0; i=bytes.length - 1; i =3) { byte[] enBytes=new byte[4]; 字节tmp=0; for(intk=0; k=2; k () if ) Ik=bytes.Length-1 ) en bytes [ k ]=(byte ) ) () bytes[i k] 255 ) (() k * 2) ) ) )| tmp ); tmp=(byte ) ) ) ) (bytes[i k] 255 ) ) )2) ) 255 )2); } else { enBytes[k]=tmp; tmp=64; } } enBytes[3]=tmp; for(intk2=0; k2=3; k2 ) if(enbytes[K2]=63 ) RES.append ) base64bytetostr[enbytes[K2] ); }else{RES.append('='; } } } return res.toString (; }主函数调用: stringzbx=z base64.base64 encode (bs.getbytes (standard charsets.utf _8) ); System.out.println (自记base64加密: ' zbx ); 运行结果:自描述base64加密:6YCG5ZCR5pyJ5L2gYQ==

三. Hex

二进制数据最常见的表示形式。 用0-9 a-f 16个字符表示。 每个十六进制字符表示4位。 也就是说,两个十六进制字符表示一个字节。 在实际应用中,特别是在初始化密钥时,必须弄清楚自己进入的密钥是用什么方式加密的,并通过对应的方式进行分析才能得到正确的结果

publicstaticstringbytes2hex string (byte [ ] b ) string buffer result=new string buffer ); for(intI=0; I b .长度; I ) { result.append (string.format (' x ',b[i] ); } return result.toString (; }公共静态字节[ ] hex string2bytes (string src ) ({ int l=src.length ) )/2; byte[] ret=new byte[l]; for(intI=0; i l; I ) { ret [ I ]=integer.value of (src.substring (I * 2,I*2),16 ).byteValue ); }返回ret; }主函数调用stringhexbm=bytes2hex string (bs.getbytes ) Standardcharsets.utf_8); system.out.println ('十六进制代码: ' hexbm ); byte [ ] bytes=hex string2bytes (he xbm ); stringhexJM=newstring(bytes ); system.out.println ('十六进制解码:“hexjm ); 执行结果:十六进制代码: E98086E59091E69C89E4BDA061进制代码:相反,有你a

违法,后果自负

欢迎使用公众号:相反,有你

欢迎使用视频号码:之乎者也

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。