巴铁博士加密代码,不联网别人就不到你代码
温馨提示:这篇文章已超过557天没有更新,请注意相关的内容是否还可用!
写在上面的
最近我的导师给我说我们实验室下个月要来个巴基斯坦士兵跟我学生物信息学,让我好好准备准备选择性教会他。
一听是军方的人,我耳朵亮了,马上问问我实验室的印尼学生和哥伦比亚学生今天印度关系怎么,得到的回答是十分糟糕,战争一触即发。因为莫迪要断水。我一想,这巴铁士兵来我们实验室要学啥呢?于是一认识,是想来学习宏基因组预测生化战争中的未知病原挖掘的技术。
说实话,这玩意儿,我是准备用来搞正在进行的联合国生物武器测试项目的。再看看我实验室的巴铁博士们的学习素质和实验水平。我对这个即日后学习的徒弟不抱任何期望,99%是个伸手党。不过,该教而是得教,但是核心技术不能教啊,于是乎我就想到加密我的代码了。
加密代码的重要性
加密代码,说的容易,做的难。毕竟我从来没有学过密码学。所以我接下去要写的在有密码学背景的人看来就是个渣了,不过用来兑付现状,是足够了。而且就我个人的经历的来说,学会加密代码,对于我们生信的人来说是很重要的。首先,如果读这篇推文的你跟我一样,来自病毒所、CDC疾控中心、军科院等一些涵盖化学安全、机密的研究单位或企业单位,而且你所承担的项目也涉及到保密规定。那么你的代码也属于机密文件。不要以为不外传,不联网别人就窃取不到你代码。现在早已有物理科技可以窃取到不联网的保密计算机存储的文件及数据了。又甚至你的实验室正在收尾一个重大研究意义的课题,数据结果啥的都打算的差不多了,突然这个之后来了其它人说是要跟随学习一下,结果她们把偷学到的知识、代码拿回来赶紧发表,把你打成抄袭。这样是不是很冤?有之后不要以为这种事情都是不太可能在你身边出现的,其实也许将来某一夜总会在你身边出现。毕竟当前商业间谍、科研间谍很多,我们探究所对全球开展生物安全辅导都会去反侦查申请人能否是特工以及与他人国家美方有关系。只有反复考察通过之后,我们探究所才允许申请。废话不多说,我们直接开题。
如何加密代码
虽然加密代码,我们可能在用这种生信软件的之后终于见到过了,比如,有之后你下载的某个工具你想看源代码,但是你开启它后看到上面是空白,啥都没有。这就是加密代码的一种科技,目前这些工具都有加密代码功能。比如Perl语言有一个,就是把你的perl脚本编程exe可执行程序,从而掩盖显式代码。不过我查资料说这些方式而是有破解方法的。这里安利大家一个在线网页可以加密的代码,这个网页主要可以把Perl代码转换成只有中文字母的字节串。加密代码,从狭义的视角讲是让你自己的代码可读性变的很差,让对方读出来觉得尴尬、捉急想跳楼。当然你写代码的之后可以把你的代码变量名搞的很难很长,比如你储存DNA序列的数组名可以拿来表示,但是这种搞你或许还没有写到脚本,你自己即将先跳楼了。我们能够自己写个程序,让我们的代码更加不可读呢?难道很简单,比如你把你的变量名的每个字母都转换成数字,比如小写的a~z用1~26表示php在线加密源码,大写的A~Z用27~52表示,然后再把这种数字转换为二字节数字,这样的数组例如DNA就可以加密为10111了。根据这个想法,我们可以编写一个perl脚本,这个类库输入是明码perl脚本,输出是加密后的perl脚本。
#!/usr/bin/perl -w
=head1 Description
This script is used to encrypt perl script
=head1 Usage
EncryptScript.pl -i > encryptedscript.pl
=head1 Parameters
-i [str] Input raw perl script
-h/-help [str] print help
=head1 Auther
Dongyan Xiong
=head1 Edit Time
2019.10.30 20:29 0.0.1
=cut
use strict;
use Getopt::Long;
my $in_perl = "";
my $help = "";
GetOptions(
'in|i=s' => \$in_perl,
'h|help:s' => \$help,
);
die `pod2text $0` if ((!$in_perl) or($help));
#建立将十进制转化为二进制的子函数
sub T2W {
my ($DIG, $GOT, $RES) = ($_[0], int($_[0] / 2), int($_[0] % 2));
my $RET = $RES;
while($GOT > 0){
$RES = int($GOT % 2);
$GOT = int($GOT/2);
$RET = $RES.$RET;
}
return $RET;
}
#建立字母映射哈希表
my %L2N =(
"a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5, "f" => 6, "g" => 7, "h" => 8, "i" => 9, "j" => 10, "k" => 11, "l" => 12,
"m" => 13, "n" => 14, "o" => 15, "p" => 16, "q" => 17, "r" => 18, "s" => 19, "t" => 20, "u" => 21, "v" => 22, "w" => 23, "x" => 24,
"y" => 25, "z" => 26, "A" => 27, "B" => 28, "C" => 29, "D" => 30, "E" => 31, "F" => 32, "G" => 33, "H" => 34, "I" => 35, "J" => 36,
"K" => 37, "L" => 38, "M" => 39, "N" => 40, "O" => 41, "P" => 42, "Q" => 43, "R" => 44, "S" => 45, "T" => 46, "U" => 47, "V" => 48,
"W" => 49, "X" => 50, "Y" => 51, "Z" => 52,
);
#建立将字符串映射为十进制数字的子函数
sub trL2N {
my $RET;
for my $key (keys %L2N){
if($_[0] eq $key){
$RET = $L2N{$key};
}
else{
next;
}
}
if(!$RET){
$RET = $_[0];
}
return $RET;
}
open(SCRIPT, "<", $in_perl);
my @output;
#用循环的方式加密perl脚本
while(
还没有评论,来说两句吧...