zoukankan      html  css  js  c++  java
  • Base64

    一:base64的加密解密

    注意:base64非常容易被破解,仅适用于加密非关键信息的场合

    在Python3中的代码实现,需要加多一步byte转换,如下:

    import base64
    
    token = "63cc/s*_7@3.com/Ala/us:f0"
    encodestr = base64.b64encode(token.encode('utf-8'))
    print(encodestr)
    >>> b'NjNjYy9zKl83QDMuY29tL0FsYS91czpmMA=='
    print(str(encodestr,'utf-8'))
    >>> NjNjYy9zKl83QDMuY29tL0FsYS91czpmMA==
    
    code = "NjNjYy9zKl83QDMuY29tL0FsYS91czpmMA=="
    decodestr = base64.b64decode(code)
    print(decodestr)
    >>> b'63cc/s*_7@3.com/Ala/us:f0'
    print(str(decodestr, 'utf-8'))
    >>> 63cc/s*_7@3.com/Ala/us:f0

    二:base64出现换行

    Python中是不用担心字符串过长,base64加密后换行的问题,如果是java

    String bTemp = Base64.encodeBase64String("123".getBytes());
            bTemp = bTemp.replaceAll("[\s*	
    
    ]", "")

    可以拿到换行后的加密字符串,做以上操作。本人尝试过,似乎没有起到效果,可能姿势不对?所以不如根源上杜绝:

      换用Apache的 commons-codec.jar, Base64.encodeBase64String(byte[])得到的编码字符串是不带换行符的(本人未证实,欢迎指正)

    import org.apache.commons.codec.binary.Base64;
    String s = "asdwe123aqdasfdfeafe1234"
    new String(Base64.encodeBase64(s.getBytes()))
    或 Base64.encodeBase64String(
    s.getBytes())

    三:base64URL转义

      编码:1.去除尾部的“=” 2.把“+”替换成“-” 3.把“/”替换成“_”

      解码:1.把"-"替换成"+" 2.把"_"替换成"/"

         3.(计算BASE64URL编码长度)%4:

          a.结果为0,不做处理  b.结果为2,字符串添加"=="  c.结果为3,字符串添加"="

      Python中提供了urlsafe_b64encode和urlsafe_b64decode实现URL的转义:  

    print base64.b64encode('ixb7x1dxfbxefxff')
    >>> abcd++// 
    print base64.b64encode('ixb7x1dxfbxefxff', '-_') 
    >>> abcd--__ 
    print base64.urlsafe_b64encode('ixb7x1dxfbxefxff') 
    >>> abcd--__ 
    base64.urlsafe_b64decode('adcd--__') 
    >>> 'ixb7x1dxfbxefxff'

        

  • 相关阅读:
    JSON的序列化和反序列化
    XML的序列化和反序列化
    FTP相关操作
    滑动换屏——Fragment
    AngularJS中复选框(checkbox)的ng-model
    AngularJS将时间戳格式化处理
    Let definitions are not supported by current JavaScript version
    MyBatis中的 suffixOverrides="," 失效
    MyBatisSystemException: Malformed OGNL expression: status != null
    MySQL字符串截取
  • 原文地址:https://www.cnblogs.com/sen-c7/p/9444518.html
Copyright © 2011-2022 走看看