加密算法


# !/bin/bash# 全局变量
str=""base64_encode_string(){# 源数据   source_string=$1echo "源数据:$1"# 判断是否为空if [ 0 -eq "${#source_string}" ]; thenecho "输入为空,退出"returnfiecho "正在执行..."# 编码集Wnrm0b7QPpI1FGBYVizZXN84vTJqocOuD9aHdgSlt2jRyAKEe6kCxhsfwL5M3U+/BASE64_CODE_TABLE=(W n r m 0 b 7 Q P p I 1 F G B Y V i z Z X N 8 4 v T J q o c O u D 9 a H d g S l t 2 j R y A K E e 6 k C x h s f w L 5 M 3 U + /)# 不知道FIRST_SOURCE_BYTE_DIVIDEND=0X04SECOND_SOURCE_BYTE_DIVIDEND=0X10THIRD_SOURCE_BYTE_DIVIDEND=0X40# 标记encode_state=1#last_source_byte=""# 结果result=""# 将字符转化成ASCII码值for((i=0;i<${#source_string};++i)){#curChar='printf "%d" "${#source_string:i:1}";'curChar=`printf "%d" "'${source_string:i:1}";`echo curChar=$curCharcase $encode_state in1)index=$(( $curChar / $FIRST_SOURCE_BYTE_DIVIDEND ))# echo "INDEX IN STATE 1 IS : $index"result="$result${BASE64_CODE_TABLE[$index]}"echo "结果:" $resultencode_state=2;;2)index_high=$(( ($last_source_byte % $FIRST_SOURCE_BYTE_DIVIDEND)* 0X10 ))index_low=$(( $curChar / $SECOND_SOURCE_BYTE_DIVIDEND ))index=$(( $index_high + $index_low ))# echo "index in state 2 is: $index"result="$result${BASE64_CODE_TABLE[$index]}"echo "结果:$result"encode_state=3;;3)index_high=$(( ($last_source_byte % $SECOND_SOURCE_BYTE_DIVIDEND) * 0X04 ))index_low=$(( $curChar / $THIRD_SOURCE_BYTE_DIVIDEND ))index=$(( $curChar % $THIRD_SOURCE_BYTE_DIVIDEND ))# echo "index2 in state 3 is: $index"result="$result${BASE64_CODE_TABLE[$index]}"echo "结果:$result"# 追加最后一位index=$(( $curChar % 0x10 ))result="$result${BASE64_CODE_TABLE[$index]}"echo "追加结果:$result"encode_state=1;;esaclast_source_byte=$curChar
}# process padingcase $encode_state in2)echo $FIRST_BYTE_DIVIDENDindex=$(( ($last_source_byte % $FIRST_SOURCE_BYTE_DIVIDEND) * 0X10 ))#echo "index in pading state 2 is: $index"result="$result${BASE64_CODE_TABLE[$index]}==";;3)index=$(( ($last_source_byte % $SECOND_SOURCE_BYTE_DIVIDEND) * 0X04 ))#echo "index in pading state 3 is: $index"result="$result${BASE64_CODE_TABLE[$index]}=";;esacecho "添加后缀:$result"str=$result}# main函数echo "开始加密..."read m
echo $m
read n
# 第二种
echo "-------------------"cat $1 |while read line
do
from=$line
base64_encode_string $from
#str=$?
# echo "输出:" $str
# 写入文件
echo "$str" >> to
done# 加密# 写入文件
#base64_encode_string $1echo "加密结束..."

解密算法


# !/bin/bash# 全局变量
str=""
_str=""
# 编码集Wnrm0b7QPpI1FGBYVizZXN84vTJqocOuD9aHdgSlt2jRyAKEe6kCxhsfwL5M3U+/
BASE64_CODE_TABLE=(W n r m 0 b 7 Q P p I 1 F G B Y V i z Z X N 8 4 v T J q o c O u D 9 a H d g S l t 2 j R y A K E e 6 k C x h s f w L 5 M 3 U + /)# 16#---->ascii
fun(){
a=$1
b=`printf "%d" $a`
#echo $b |awk '{printf("%c", $1)}'
_str=`echo $b |awk '{printf("%c", $1)}'`
}# 四个字符转化为正确的三个字符
get(){# getget=$1echo "数据源" $1# toto=""# sizesize=4if [[ $2 = 1 ]]; thensize = 3elif [[ $2 = 2 ]]; thensize =2fifor((i=0;i<size;++i))do# echo "循环I:$i ${get:i:1}"for((j=0;j<64;j++))do# echo "当前:$j ${BASE64_CODE_TABLE[$j]}"if [[ ${get:i:1} = ${BASE64_CODE_TABLE[$j]} ]]; thenif [[ i < size-1 ]];thento=$(( ($to + $j)* 0x10))# 此时为十进制echo "匹配:$i $j $to ${get:i:1}"elseto=$(($to + $j))fibreakfidonedoneget=""# 十进制转化为十六进制echo "十六进制结果" $toif [[ size = 1 ]]; thento=$to/0x04tmp=$to / 0x100tmp="\x${tmp}"tmp=`printf "$tmp"`to=$to >> 8tmp="\x${to}"tmp=`printf "$tmp"`get=$get $tmpelif [[ size = 2 ]]; thento=$to/0x10tmp="\x${to}"tmp=`printf "$tmp"`get=$get $tmpelseprintf "%d" $(( ($to / 65536) ))tmp=$(( ($to / 65536) ))fun $tmpecho "_str:" $_strto=$(( ($to % 65536) ))tmp=$(( ($to / 256) ))# tmp="\x${tmp}"echo `printf "$tmp"`tmp=`printf $tmp`get="$get" "$tmp"to=$to >> 8get=$get `echo -e '\x${to % 0x100}'`to=$to >> 8get=$get `echo -e '\x${to % 0x100}'`fiecho "get----------->"echo $get
}base64_encode_string(){# 源数据   source_string=$1last=0last_to=0# 结果result=""# 判断是否为空if [ 0 -eq "${#source_string}" ]; thenecho "输入为空,退出"returnfi# 结尾标记end=0echo "结尾: ${source_string:${#source_string}-3}"if [ ${source_string:${#source_string}-2} = "==" ]; thenend=2elif [ ${source_string:${#source_string}-1} = "=" ]; thenend=1elseend=0fi# 判断字符串长度len=${#source_string}if [[ 4 = len ]]; thenecho "字符串长度小于4"elseecho "字符串长度大于4"m=${#source_string}-4for((i=0;i<m;))doget ${source_string:i:4} 0result=$result $?i = $i + 4donefiecho "对结尾进行处理..."last=${source_string:${#source_string}-4:4}echo $lastcase $end in0);;1);;2)get $last 2result=$result $?;;esac  # 编码集Wnrm0b7QPpI1FGBYVizZXN84vTJqocOuD9aHdgSlt2jRyAKEe6kCxhsfwL5M3U+/# BASE64_CODE_TABLE=(W n r m 0 b 7 Q P p I 1 F G B Y V i z Z X N 8 4 v T J q o c O u D 9 a H d g S l t 2 j R y A K E e 6 k C x h s f w L 5 M 3 U + /)# 第一个字符取前六位,所以是对0100取整去掉最后两位,第二个是前一个字符的后两位和这个字符的FIRST_SOURCE_BYTE_DIVIDEND=0X04SECOND_SOURCE_BYTE_DIVIDEND=0X10THIRD_SOURCE_BYTE_DIVIDEND=0X40# 标记encode_state=1#last_source_byte=""# 结果result=""# 将字符转化成ASCII码值for((i=0;i<${#source_string};++i)){#curChar='printf "%d" "${#source_string:i:1}";'curChar=`printf "%d" "'${source_string:i:1}";`echo curChar=$curCharcase $encode_state in1)index=$(( $curChar / $FIRST_SOURCE_BYTE_DIVIDEND ))echo "INDEX IN STATE 1 IS : $index"result="$result${BASE64_CODE_TABLE[$index]}"encode_state=2;;2)index_high=$(( ($last_source_byte % $FIRST_SOURCE_BYTE_DIVIDEND)* 0X10 ))index_low=$(( $curChar / $SECOND_SOURCE_BYTE_DIVIDEND ))index=$(( $index_high + $index_low ))echo "index in state 2 is: $index"result="$result${BASE64_CODE_TABLE[$index]}"encode_state=3;;3)index_high=$(( ($last_source_byte % $SECOND_SOURCE_BYTE_DIVIDEND) * 0X04 ))index_low=$(( $curChar / $THIRD_SOURCE_BYTE_DIVIDEND ))index=$(( $curChar % $THIRD_SOURCE_BYTE_DIVIDEND ))echo "index2 in state 3 is: $index"result="$result${BASE64_CODE_TABLE[$index]}"encode_state=1;;esaclast_source_byte=$curChar
}# process padingcase $encode_state in2)echo $FIRST_BYTE_DIVIDENDindex=$(( ($last_source_byte % $FIRST_SOURCE_BYTE_DIVIDEND) * 0X10 ))#echo "index in pading state 2 is: $index"result="$result${BASE64_CODE_TABLE[$index]}==";;3)index=$(( ($last_source_byte % $SECOND_SOURCE_BYTE_DIVIDEND) * 0X04 ))#echo "index in pading state 3 is: $index"result="$result${BASE64_CODE_TABLE[$index]}=";;esacstr=$result}# main函数 $1输入文件 $2输出文件echo "开始解密..."# 第二种
echo "-------------------"get TSkr 0read mcat $1 |while read linedo
from=$line
echo "输入参数:$from"
base64_encode_string $from
# 写入文件
echo "$str" >> $2doneecho "解密结束..."

BaseTo有点问题,十六进制取高两位会报错,Base暂时没问题,应该

✨Shell脚本实现Base64 加密解密相关推荐

  1. shell脚本:base64加密、解密字符串并赋值给变量方法

    几经波折才能够实现使用 base64 加密.解密字符串并赋值给变量.网上绝大多数是使用 echo 管道实现 加密和解密字符串的输出. 代码如下: pwd=$( base64 -d <<&l ...

  2. python编写base64加密解密

    base64加密解密 前言 脚本代码 前言 最近做题一直遇到一些base64代码解码,便想着自己写一个可以进行加密解密的脚本,自己使用 脚本代码 脚本如下: import base64 def b64 ...

  3. javascript base64加密解密

    javascript base64加密解密 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&q ...

  4. chrome 控制台 base64加密解密

    1.视界 2. 背景 因为在客户机器,要查询base64的解密信息,但是因为内网无法使用网络,只能拷贝软件本想查询插件,后来发现谷歌支持解密 3.方法 在chrome控制台上可以直接使用函数做base ...

  5. ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]

    用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util;   im ...

  6. 在线base64加密解密工具

    在线base64加密解密工具 在线base64加密解密工具 本工具支持对字符串进行base64加密和解密(严格来说,只能算是字符串编码),纯客户端计算,数据不会上传到服务器中,请放心使用. https ...

  7. 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  8. js怎么实现对html代码加密解密,JS实现Base64加密解密

    JavaScript实现Base64加密解密.Base64与其说是加密算法不如说是方便数据传输而生的数据转换手段. 测试代码:html> test .resource_enc, .resourc ...

  9. Java base64加密解密 两种实现方式

    1.为什么要使用Base 64 Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输. 由于一些二进制字符在传输协议中属于 控制字符,不能直接传送,所以需要转换一下才可以. ...

最新文章

  1. 一步一步实现扫雷游戏(C语言实现)(三)
  2. 独家 | 基于知识蒸馏的BERT模型压缩
  3. qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
  4. VSTO学习笔记(四)从SharePoint 2010中下载文件
  5. 未能打开组策略对象 您可能没有合适的权限
  6. curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
  7. COGS 2687 讨厌整除的小明
  8. Origin 2019b 图文安装教程及下载(附安装包)
  9. NVIDIA 驱动和CUDA下载官网地址
  10. docker快速搭建http服务器
  11. 团队协作管理-任务追踪管理
  12. 【欢迎来怼】 Beta发布事后诸葛亮会议
  13. [日推荐]『与你见字如面』信息时代的一股清流
  14. 简洁、快速、节约内存的Excel处理工具EasyExcel
  15. 2018 Google I/O 中最重要的十项更新
  16. 第五章 阻抗匹配与调谐 Smith圆图
  17. IE打开报错,提示该内存不能为read的解决办法!
  18. 关于SoC芯片设计中的一点理解——1
  19. 基于数据融合和串级PID的小型四旋翼无人机高度测量与控制系统
  20. 7.3 股票分析(project)

热门文章

  1. python关系运算符实例_python编程中最常用的比较运算符实例
  2. Oracle 11gR2 RAC集群服务启动与关闭命令汇总
  3. kafka-3-故障排错
  4. SAP MM GR/IR Account Maintenance的DEMO
  5. 串口发送图片VGA显示
  6. 设计模式学习(三):确保对象的唯一性—单例模式
  7. acm模板 java_java 之acm模板
  8. 离散效率写给自己的话 二
  9. ASP.NET--表达式、运算符与分支结构
  10. python公共变量声明_Python变量声明