关于getBytes()

最近Google上不了很是痛苦,只能一直开着goagent,夏日laptop发热严重,开linux会自动关机。命途多舛。

今天在做逆向时候,源码里面对一个byte[]进行编码成为一串字符串QjI4REM3NTdGQjUxMDk5NTJBMEFBOTMzQzMzMkE2RDM=

.class逆向代码

 1     if (arrayOfByte == null)
 2     {
 3       LogUtil.e(this.TAG, "create signature failed.");
 4       return null;
 5     }
 6     StringBuffer localStringBuffer = new StringBuffer("");
 7     for (int i = 0; i < arrayOfByte.length; i++)
 8     {
 9       int j = arrayOfByte[i];
10       if (j < 0)
11         j += 256;
12       if (j < 16)
13         localStringBuffer.append("0");
14       localStringBuffer.append(Integer.toHexString(j));
15     }
16     return IdentifyApp.base64encode(localStringBuffer.toString().toUpperCase().getBytes());
17   }

求byte[]和decode

1 BASE64Decoder decoder = new BASE64Decoder();
2         byte[] decodedbytes = decoder.decodeBuffer(str);
3         for(int i = 0;i<decodedbytes.length;i++) System.out.print(" "+decodedbytes[i]);
4         System.out.println();
5         System.out.println(new String(decodedbytes));

byte[]>>>  66 50 56 68 67 55 53 55 70 66 53 49 48 57 57 53 50 65 48 65 65 57 51 51 67 51 51 50 65 54 68 51
string>>>B28DC757FB5109952A0AA933C332A6D3

求原数组

 1 package hextooct;
 2
 3 import java.util.ArrayList;
 4
 5 public class Transfer {
 6     public static void main(String[] args)
 7     {
 8         String str = "B28DC757FB5109952A0AA933C332A6D3";
 9         char[] c = str.toCharArray();
10         ArrayList<Integer> al = new ArrayList<Integer>();
11         for(int i = 0; i < c.length; i++)
12         {
13             String s = String.valueOf(c[i]);
14             if(c[i]==‘0‘) continue;
15             if(c[i]>9){
16                 System.out.print(Integer.parseInt(s, 16));
17                 al.add(Integer.parseInt(s,16));
18             }
19             else {System.out.print(c[i]); al.add(Integer.parseInt(s));}
20             System.out.print(" ");
21
22         }
23         System.out.println();
24         System.out.println(al.toString());
25
26     }
27
28 }

跟踪源码:

 public static byte[] md5digest(String paramString)
  {
    monitorenter;
    try
    {
      byte[] arrayOfByte2 = MarkManager.base64decode(MMClientSDK_ForPhone.md5Algorithm(paramString));
      arrayOfByte1 = arrayOfByte2;
      return arrayOfByte1;
    }
    catch (Exception localException)
    {
      while (true)
      {
        LogUtil.w("IdentifyApp", "base64 decrypt license file failure");
        byte[] arrayOfByte1 = null;
      }
    }

解出来string

package com.crack;
import java.io.IOException;
import java.lang.String;

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;;
public class Crack {

    public static void main(String[] args) throws IOException
    {
        byte[] arr = {11, 2, 8, 13, 12, 7, 5, 7, 15, 11, 5, 1, 9, 9, 5, 2, 10, 10, 10, 9, 3, 3, 12, 3, 3, 2, 10, 6, 13, 3};
        BASE64Encoder baseencoder = new BASE64Encoder();
        String result = baseencoder.encode(arr);
        System.out.println(result);

        String str="CwIIDQwHBQcPCwUBCQkFAgoKCgkDAwwDAwIKBg0D";
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] decodedbytes = decoder.decodeBuffer(str);
        for(int i = 0;i<decodedbytes.length;i++) System.out.print(" "+decodedbytes[i]);
        System.out.println();
    }
}
CwIIDQwHBQcPCwUBCQkFAgoKCgkDAwwDAwIKBg0D
 11 2 8 13 12 7 5 7 15 11 5 1 9 9 5 2 10 10 10 9 3 3 12 3 3 2 10 6 13 3

关于getBytes()

时间: 2024-10-24 16:14:47

关于getBytes()的相关文章

Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str="Hello";  推荐这种 使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间 如图: 源代码 StringDemo01.java 2.String内容的比较 String str="Hello"

Collection 和Collections的区别|、String的getBytes方法

1.比较Collection 和Collections的区别=====    (1).java.util.Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式.   (2)2.java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collec

小结getBytes()默认编码导致的xml字符串中出现乱码

遇到乱码第一印象想到的是如何统一编码,很少注意到这期间穿插的某些过程也是一大隐患.. sae上部署了一个spring写的微信小程序,手机总关注测试号点击菜单得到的文本消息却是乱码.. 聚焦发送消息的部分代码: response.setCharacterEncoding("utf-8"); response.getOutputStream().write(result.getBytes()); 编码已经设置为utf-8,spring也加了过滤器进行utf-8的解码...而且控制台也的确打

getBytes()---&gt;字符串转字节数组

是String的一个方法String的getBytes()方法是得到一个系统默认的编码格式的字节数组getBytes("utf-8") 得到一个UTF-8格式的字节数组把String转换成bytes,各种编码转换成的bytes不同,比如UTF-8每个汉字转成3bytes,而GBK转成2bytes,所以要说明编码方式,否则用缺省编码.

java.lang.String.getBytes(String charsetName)方法实例

java.lang.String.getBytes(String charsetName) 方法编码将此String使用指定的字符集的字节序列,并将结果存储到一个新的字节数组. 声明 以下是java.lang.String.getBytes()方法的声明 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 参数 charset -- 这是一个支持的字符集的名称. 返回值 此方法返回得到的字节

在JSP中,关于处理get乱码问题解决方案——new String(s.getBytes(&quot;iso-8859-1&quot;),&quot;utf-8&quot;);的思考

最近在学JSP,在学习处理get方式提交数据出现乱码问题的时候,对其中的一个解决方法new String(s.getBytes("iso-8859-1"),"utf-8");产生了疑问,就是为什么要使用s.getBytes("iso-8859-1")? 当时只这样想的:客户端向服务器发送一个请求,比如说是一个字符串"请求":之后服务器接收到这个请求,也就是这个字符串,可是这时由于某种原因出现了乱码!这时为了解决这个问题,使用n

getBytes等空指针异常

在使用getBytes这个方法进行字符编码转换的时候回发生空指针异常,困扰了我近30分钟.最终得出如下解决方案,直接扔代码,相信各位兄台一定能看懂. String flag2 = req.getParameter("flag"); String temp = null; if(flag2 != null){ temp = new String(flag2.getBytes("ISO-8859-1"),"UTF-8"); } 这样经过判断就不会有空

用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使用的unicode版本是UCS-2,就是使用2个字节表示一个字符的unicode版本,这就对上了,java使用的就是UCS-2标准,所以,String中的value中存储的都是一个个数字 比如’你’的unicode编码是4f60,看下面的测试代码 char c = '你'; System.out.p

java中的String.getBytes()的用法

在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通OS下,返回的东西不一样! String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如 byte[] b_gbk = "中".getBytes("GBK"); byte[] b_utf8 = "中".getBytes("UTF-8"); by

String.getBytes(),源码之下,了无秘密

@Deprecated public void getBytes(int srcBegin, int srcEnd, byte dst[], int dstBegin) { if (srcBegin < 0) { throw new StringIndexOutOfBoundsException(srcBegin); } if (srcEnd > value.length) { throw new StringIndexOutOfBoundsException(srcEnd); } if (s