Skip to content

Instantly share code, notes, and snippets.

@vivekwebm2020
Forked from albert1205/EncryptAndDecrypt.vbs
Created February 6, 2022 22:39
Show Gist options
  • Select an option

  • Save vivekwebm2020/44d46ae39e7d31bcbf049e29ea71153f to your computer and use it in GitHub Desktop.

Select an option

Save vivekwebm2020/44d46ae39e7d31bcbf049e29ea71153f to your computer and use it in GitHub Desktop.
Encrypt And Decrypt String by VBScript
#!/bin/sh
###################################
#
#功能:取一年的某一月有多少天
#输入参数:
# 1. yy年份
# 2. mm月份
#输出:
# 一个月的天数
# -1 不成功
###################################
get_days()
{
yy_tmp=$1
mm_tmp=`expr $2 + 0`
if [ $? -ge 2 ]; then
return -1
fi
case $mm_tmp in
1|3|5|7|8|10|12) ret_days=31
;;
4|6|9|11) ret_days=30
;;
2) ret_days=28
;;
esac
if [ $mm_tmp -eq 2 ]; then
yy_tmp1=`expr $yy_tmp / 4 \* 4`
if [ $? -ge 2 ]; then
return -1
fi
yy_tmp2=`expr $yy_tmp / 100 \* 100`
if [ $? -ge 2 ]; then
return -1
fi
yy_tmp3=`expr $yy_tmp / 400 \* 400`
if [ $? -ge 2 ]; then
return -1
fi
if [ $yy_tmp1 -eq $yy_tmp ]; then
if [ $yy_tmp2 -eq $yy_tmp ]; then
if [ $yy_tmp3 -eq $yy_tmp ]; then
ret_days=29
fi
else
ret_days=29
fi
fi
fi
return $ret_days
}
###############################################
#
#功能:计算一个日期加或减一个天数后得到的新日期
#输入参数:
# 1.日期
# 2.要变化的天数
#输出:
# 变化后的日期
# -1 失败
# 0 :表示增量为零
################################################
day_calculate()
{
date1=$1
datemodi=$2
#若日期增量为0,则返回输入日期
if [ $datemodi -eq 0 ]; then
ret_date=$date1
return 0
fi
yy=`echo $date1 | cut -b 1-4`
if [ $? -ne 0 ]; then
return -1
fi
mm=`echo $date1 | cut -b 5-6`
if [ $? -ne 0 ]; then
return -1
fi
dd=`echo $date1 | cut -b 7-8`
if [ $? -ne 0 ]; then
return -1
fi
dd1=`expr $dd + $datemodi`
if [ $? -ge 2 ] ; then
return -1
fi
#小于零和大于零的处理
if [ $datemodi -lt 0 ] ; then
while [ 0 -eq 0 ]
do
if [ $dd1 -ge 1 ] ; then
break
fi
mm=`expr $mm - 1`
if [ $? -ge 2 ] ; then
return -1
fi
if [ $mm -le 0 ] ; then
mm=`expr $mm + 12`
if [ $? -ge 2 ]; then
return -1
fi
yy=`expr $yy - 1`
if [ $? -ge 2 ] ; then
return -1
fi
fi
get_days $yy $mm
daysofthismon=$?
if [ $daysofthismon -lt 0 ] ; then
return -1
fi
dd1=`expr $dd1 + $daysofthismon`
if [ $? -ge 2 ] ; then
return -1
fi
done
else
while [ 0 -eq 0 ]
do
get_days $yy $mm
daysofthismon=$?
if [ $daysofthismon -lt 0 ] ; then
return -1
fi
if [ $dd1 -le $daysofthismon ] ; then
break
fi
dd1=`expr $dd1 - $daysofthismon`
if [ $? -ge 2 ] ; then
return -1
fi
mm=`expr $mm + 1`
if [ $mm -gt 12 ] ; then
mm=`expr $mm - 12`
yy=`expr $yy + 1`
fi
done
fi
mm=`expr $mm + 0`
if [ $? -ge 2 ] ; then
return -1
fi
dd1=`expr $dd1 + 0`
if [ $? -ge 2 ] ; then
return -1
fi
if [ $mm -le 9 ] ; then
ret_date=${yy}0${mm}
else
ret_date=${yy}${mm}
fi
if [ $dd1 -le 9 ] ; then
ret_date=${ret_date}0${dd1}
else
ret_date=${ret_date}${dd1}
fi
}
########## starting HERE ###################
Today=`date +%Y%m%d`
day_calculate ${Today} -15
NextDay=${ret_date}
LastDay=$NextDay
#BAK_GODU_HOME=/home/godu/GODU_CORE/bin
BAK_GODU_HOME=/home/godu/GODU_LOGBAK
GODU_HOME=/home/godu/GODU_CORE
PATH=$PATH:/bin
export PATH
#check which day begin
if [ -f $BAK_GODU_HOME/.bak_godulog_catch ]; then
#file recorded last zip date found
LastDay=`cat $BAK_GODU_HOME/.bak_godulog_catch`
# echo "read date: "$LastDay
else
touch $BAK_GODU_HOME/.bak_godulog_catch
LastDay=20000101
echo $NextDay > $BAK_GODU_HOME/.bak_godulog_catch
fi
for d in `ls $GODU_HOME/godulog|awk '{print $NF}'`
do
if [ $d -gt $LastDay ] ; then
if [ $d -lt $NextDay ] ; then
LastDay=$d
echo $LastDay
#go into date fileholder, list all ne
for ne in `ls $GODU_HOME/godulog/$d|grep -v tar|awk '{print $NF}'`
do
dd=$GODU_HOME/godulog/$d
#echo $dd
tar -cPf $dd/$ne.tar $dd/$ne
gzip $dd/$ne.tar
rm -r $dd/$ne
done
fi
fi
done
echo $LastDay > $BAK_GODU_HOME/.bak_godulog_catch
Call EncryptTool
Call DecryptTool
'------------------------
'【 加密字符串 】
'------------------------
Private Function Encrypt(Plaintext)
Const offset = 10
Const minAsc = 33
Const maxAsc = 126
Dim Ciphertext
Randomize
Ciphertext = Ciphertext & Chr(Int((maxAsc-minAsc+1)*Rnd+minAsc))
Ciphertext = Ciphertext & Chr(Int((maxAsc-minAsc+1)*Rnd+minAsc))
For i=1 To Len(Plaintext)*2
If i mod 2 = 0 Then
newAsc = Asc(Mid(Plaintext,i/2,1)) - offset
If newAsc < minAsc Then
newAsc = newAsc + maxAsc - minAsc + 1
End If
Ciphertext = Ciphertext & Chr(newAsc)
' MsgBox Asc(Mid(Plaintext,i/2,1)) & " -> " & newAsc
Else
Ciphertext = Ciphertext & Chr(Int((maxAsc-minAsc+1)*Rnd+minAsc))
' MsgBox "Rnd:" & Chr(Int((maxAsc-minAsc+1)*Rnd+minAsc))
End If
Next
Ciphertext = Ciphertext & Chr(Int((maxAsc-minAsc+1)*Rnd+minAsc))
Ciphertext = Ciphertext & Chr(Int((maxAsc-minAsc+1)*Rnd+minAsc))
Encrypt = Ciphertext
End Function
Private Sub EncryptTool()
Plaintext = InputBox("在下面输入【明文】:","加密工具","")
Ciphertext = Encrypt(Plaintext)
InputBox "【明文】:" & Plaintext & vbNewLine & vbNewLine & "【密文】:如下","加密工具",Ciphertext
End Sub
'------------------------
'【 解密字符串 】
'------------------------
Private Function Decrypt(Ciphertext)
Const offset = 10
Const minAsc = 33
Const maxAsc = 126
If Len(Ciphertext) < 5 Then
Decrypt = ""
Exit Function
End If
Dim Plaintext
Ciphertext = Mid(Ciphertext,3,Len(Ciphertext)-4)
For i=2 To Len(Ciphertext) Step 2
oldAsc = Asc(Mid(Ciphertext,i,1)) + offset
If oldAsc > maxAsc Then
oldAsc = oldAsc - maxAsc + minAsc - 1
End If
Plaintext = Plaintext & Chr(oldAsc)
' MsgBox Asc(Mid(Ciphertext,i,1)) & " -> " & oldAsc
Next
Decrypt = Plaintext
End Function
Private Sub DecryptTool()
Ciphertext = InputBox("在下面输入【密文】:","解密工具","")
Plaintext = Decrypt(Ciphertext)
InputBox "【密文】:" & Ciphertext & vbNewLine & vbNewLine & "【明文】:如下","解密工具",Plaintext
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment