加密真的能加密吗?

为什么说这个事呢,因为加密本身就是一个伪命题,下面解释:        

        我其实思考加密这件事已经思考很久了,其实思考了至少1年了,今天偶然从一本书上看到java安全。

        java有加密类,可以使用java的加密类实现加密,第二个就是自己手写加密解密。我会用2个维度说加密,1是对于大多数人的,就是对于大众的就是不会编程的,2是针对程序员就是会编程的。

        1. 对于大众的呢我举个加密的例子:

                比如你登录软件后让你输入用户名密码,你输入就登录了对吧,这种很简单,无非就是你的用户名存数据库了,直接登录就行了,程序读数据库的数据然后判断你输入的和数据库的一致。那么问题来了,我如果用程序绕过加解密过程呢,直接返回正常结果呢,好吧,如果是程序员有杠精会说,绕过了拿不到返回值怎么办,那我就在验证密码的地方直接返回true,如果前端要拿到返回的数据,我在前端继续写返回true,这样是不是密码形同虚设。好吧我是为了制造恐慌,制造焦虑,下面提出解决方法,其实业界一直在用,就是下边说的对于程序员的加密中会说。我会举几个例子。

    2. 对于程序员的加密举例:

            这里我还是说下怎么加密,程序员的加密相对高级点,就是代码加密,我说下逻辑吧,就是代码可以反编译,但是呢反编译后就能看到代码,然后就能运行代码改代码,这里说下,反编译后有些代码可能还是无法编译的,这里会涉及到一个知识点,拿java举例:java的类加载可以用多个加载器,主加载器直接用虚拟机加载进去运行,这里肯定字节码不能乱,不然虚拟机都无法识别,然后可以在程序执行到下一步的时候用自己写的类加载器去加载剩余的程序自己写的代码的字节码,比如,我生成的字节码(你可以理解为文件内容)每一位都左偏移3个位置,这样在把字节码写到另一个文件,然后类加载的时候,再读出来再右偏移回来就好了。这样左其实有个问题,如果是程序员人家看到你代码,你加解密的文件肯定是特殊的人家就挨着找,就是费事一些,还是能给你还原回来源文件的,好吧这就是最开始的加解密,我再说第二种,其实就是认证,给你们抛个砖,https为什么用jdk自己生成的证书会提示安全问题,因为一旦攻入你得电脑,你得所有加解密算法一览无余,而且是你服务器本地的肯定能看到,这样怎么解决呢?

    3. 终极方案

            远端存私钥,本地也就是你的部署程序的服务器存共钥,这样无论如何他也无法攻克你的证书私钥,除非攻克你的远端私钥,这也就是为什么https的证书只有认可的大机构办法的人家才不会提示安全问题的最根本原因,当然如果你自认为你的服务器足够牛逼足够安全也可以。

总结:

        密码加解密没有银弹,存非对称远端私钥,本地公钥就可以了,至于再细的加密算法那种好,可以自己去看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章