首页 > 其他分享 > day07 7.2 常用加密

day07 7.2 常用加密

时间:2023-07-16 15:23:13浏览次数:34  
标签:加密 String list day07 System 7.2 item res print

day07 7.2 常用加密

【1】字符串与字节

  • 反编译回来的代码有些字符串使用字节表示
    • 隐藏真正字符串
String salt = "sign";
System.out.println(Arrays.toString(salt.getBytes()));
String v4 = new String(new byte[]{115, 105, 103, 110});
System.out.println(salt);
System.out.println(v4);
  • python转换
v1 = [115, 105, 103, 110]
def java_arr_to_python_str(v1):
    num_list = bytearray()
    for i in v1:
        if i < 0:
            i = i + 256
        num_list.append(i)
    return num_list.decode('utf-8')


if __name__ == '__main__':
    print(java_arr_to_python_str(v1))

【2】UUID

import java.util.UUID;

public class Hello {
    public static void main(String[] args){
        String uid = UUID.randomUUID().toString();
        System.out.println(uid);
    }
}

// python
import uuid
uid = str(uuid.uuid4())
print(uid)

![3](imgs/day07 7.1 Java中的面向对象之类与对象.assets/3.png)

【3】随机值

  • java
// 随机生成80位,10个字节
BigInteger v4 = new BigInteger(80, new SecureRandom());
// 让字节以16进制展示
String res = v4.toString(16);
System.out.println(res);
  • python3.9+
# python 3.9
import random
data = random.randbytes(10)  # python3.9
ele_list = []
for item in data:
    ele = hex(item)[2:]
    ele_list.append(ele)
res = "".join(ele_list)
print(res)
# 或者
import random
data = "".join([hex(item)[2:] for item in random.randbytes(10)])
print(data)
  • python3.9-
# 3.9以前
import random
byte_list = [random.randint(0, 255) for i in range(10)]
print([item for item in byte_list])
print([hex(item)[2:] for item in byte_list])
print([hex(item)[2:].rjust(2, "0") for item in byte_list])

print("".join([hex(item)[2:].rjust(2, "0") for item in byte_list]))

【4】时间戳

String t1 = String.valueOf(System.currentTimeMillis() / 1000); // 秒级别
String t2 = String.valueOf(System.currentTimeMillis()); // 毫秒级别

System.out.println(t1);
System.out.println(t2);

![4](imgs/day07 7.1 Java中的面向对象之类与对象.assets/4.png)

  • python
import time

v1 = int(time.time()) # 秒级别
v2 = int(time.time()*1000)# 毫秒级别
print(v1)
print(v2)

【5】十六进制的字符串

![5](imgs/day07 7.1 Java中的面向对象之类与对象.assets/5.png)

s='pengyuyan'.encode('utf-8')
l=[]
for i in s:
    l.append(hex(i)[2:].rjust(2,'0')) # 转16进制,只去后两位,如果不足两位,补0
print(l)

【6】md5

![6](imgs/day07 7.1 Java中的面向对象之类与对象.assets/6.png)

import hashlib
obj = hashlib.md5('yyy'.encode('utf-8'))
obj.update('xxxxx'.encode('utf-8'))

# java中没有这个功能,把每个字节转换成16进制
v1 = obj.hexdigest()
print(v1) # d3c0aaaf596e3299f695591f00fd75cb

v2 = obj.digest()
print(v2) # b'\xd3\xc0\xaa\xafYn2\x99\xf6\x95Y\x1f\x00\xfdu\xcb'

【7】base64编码

  • java
String name = "彭于晏";
// 编码
Base64.Encoder encoder  = Base64.getEncoder();
String res = encoder.encodeToString(name.getBytes());
System.out.println(res); //5b2t5LqO5pmP

// 解码
Base64.Decoder decoder  = Base64.getDecoder();
byte[] origin = decoder.decode(res);
String data = new String(origin);
System.out.println(data); // 彭于晏
  • python
import base64

name = "彭于晏"
res = base64.b64encode(name.encode('utf-8'))
print(res) # b'5b2t5LqO5pmP'

data = base64.b64decode(res)
origin = data.decode('utf-8')
print(origin) # "彭于晏"

标签:加密,String,list,day07,System,7.2,item,res,print
From: https://www.cnblogs.com/dream-ze/p/17557893.html

相关文章

  • day07 7.1 Java中的面向对象之类与对象
    day077.1Java中的面向对象之类与对象【一】类与对象【1】类定义规范类与对象的关系类是实体对象的概念模型,笼统的,不具体的,比如人类、动物类、鸟类对象又称为实体,类具体化的表现小红/小明小猫一号/小狗一号对象中有属性,有方法不同对象属性是独有的方法是共......
  • 信息安全 -- 数据加密 -- HTTPS原理
    对称加密:同一个密钥进行加解密,典型的对称加密方式AES算法优点:运算速度快缺点:密钥需要信息交换的双方共享,一旦被窃取,消息会被破解 非对称加密:公钥加密,私钥解密;或者私钥加密,公钥解密优点:私钥严格保密,公钥任意分发,黑客获取公钥无法破解密文缺点:运算速度非常慢非对称加密的......
  • SpringBoot中集成jasypt-spring-boot实现配置文件数据加密脱敏
    场景经常会遇到这样一种情况:项目的配置文件中总有一些敏感信息,比如数据源的url、用户名、密码....这些信息一旦被暴露那么整个数据库都将会被泄漏,那么如何将这些配置隐藏呢。除了使用手动将加密之后的配置写入到配置文件中,提取的时候再手动解密的方式,还可以使用如下方式。jas......
  • 07.10~07.21 总结
    07.10T1一开始理解错题意,后来看样例才发现。觉得暴力是能过的,推了下两个圆的交点坐标,然后转换成了一个求最多覆盖的问题。先想了下权值线段树,发现做不到。然后想到扫描线的思想,就考虑把点排序,打上+1/-1标记。然后排序。但是一直被排序后初始点在结束点后面的情况给卡住,后面......
  • SpringBoot配置文件加密
    大多数的项目都是需要用到配置文件的,配置文件配置了一些必备信息,就比如数据库链接信息,缓存信息,而这些信息以明文的形式写在配置文件中,这是相当危险的,下面我就介绍一种解决方案,通过把配置信息加密放在配置文件中,这样就大大降低了风险。话不多说,直接上案例,代码比什么都管用。1.导入依......
  • JS混淆加密,如何设置配置选项?
    JS混淆加密工具,通常有众多的加密选项。比如,著名的JShaman,中文版有十余种配置选项、英文则有二十余种配置。添加图片注释,不超过140字(可选)当我们在对JS代码进行加密时,该启用哪些选项呢?一般来说,使用工具默认的配置即可,默认配置可满足绝大多数的需求,即满足JS代码安全需求,也不会影响执......
  • 【Python】对密码文本进行加密, 并判断 hashlib
    importhashlibdefencrypt_password(password,salt):#创建一个sha256的哈希对象sha256_hash=hashlib.sha256()#将盐值和密码组合起来并进行哈希hashed_password=salt.encode('utf-8')+password.encode('utf-8')sha256_hash.update(hashed_......
  • 对JS代码混淆加密的法律意义
    对JS代码混淆加密的法律意义你知道吗?JS代码经混淆加密之后,将得到法律层面的保护。这是因为:对加密的JS代码进行逆向破解,破解者将面临以下多种法律风险。1、侵权责任加密的JS代码或相关产品在涉及生产经营时,破解者可能侵害对方商业利益、技术机密等,被破解方可视受到的侵害起诉追......
  • 2023.7.2-假期周进度报告
    本周(7.2-7.8)主要是完成数据库综合训练小学期我的选题是学生管理系统7.2号之前,我进行了数据库的设计,完成连接数据库,注册,登录页面及其功能也实现了7.2我完成了功能函数的设计,完成了分为角色的主页面,具体是用id判断status,实现身份的判别,通过身份的判别来跳转到到不同的页面7.3我今天......
  • hutool md5 aes 加密解密
    //AES加密解密AESaes=newAES(Mode.CBC,Padding.ZeroPadding,"xxx".getBytes(),"xxx".getBytes());//加密并进行Base转码Stringencrypt=aes.encryptBase64(content);//解密为字符串Stringdecrypt=aes.decryptStr(encrypt);System.out.println(decrypt);......