安卓 信息加密 好像无论怎么加密 信息都可以被破解出来啊~

janchin 2014-11-03 04:12:54
个人在这方面没什么经验,只是需要用到一些加密的。特别是通讯这方面。

1. 通过java的本身的加密工具,对数据进行加密,然后传输。那App被反编译之后。密钥之类的都一览无余。抓取密文之后,按照反编译后的代码逻辑自己写个解密过程就行了。。。

2. 通过JNI调用,so中的函数对数据进行加密。这个就有以下几种情况了:
(1)如果加解密都在so里面,那么native方法很容易被找到。找到native方法后,抓取密文信息,自己将so拿出来,调用解密函数就行了。
(2)如果解密在服务端。将抓取的密文发送服务端解密,然后再调用本地的(通信层的)解密方法一样可以看到明文。
这样,虽然请求没有破解,但是返回报文存在被破解的可能性。。。


想来想去 没有很好的解决方案啊~~求教。。。
...全文
279 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
janchin 2014-11-06
  • 打赏
  • 举报
回复
引用 4 楼 svenwang 的回复:
[quote=引用 3 楼 svenwang 的回复:] [quote=引用 2 楼 janchin 的回复:] [quote=引用 楼主 janchin 的回复:] 个人在这方面没什么经验,只是需要用到一些加密的。特别是通讯这方面。 1. 通过java的本身的加密工具,对数据进行加密,然后传输。那App被反编译之后。密钥之类的都一览无余。抓取密文之后,按照反编译后的代码逻辑自己写个解密过程就行了。。。 2. 通过JNI调用,so中的函数对数据进行加密。这个就有以下几种情况了: (1)如果加解密都在so里面,那么native方法很容易被找到。找到native方法后,抓取密文信息,自己将so拿出来,调用解密函数就行了。 (2)如果解密在服务端。将抓取的密文发送服务端解密,然后再调用本地的(通信层的)解密方法一样可以看到明文。 这样,虽然请求没有破解,但是返回报文存在被破解的可能性。。。 想来想去 没有很好的解决方案啊~~求教。。。
那返回报文呢?你服务器加密之后肯定是由客户端解密,只要客户端解密,就可以被破解出来。无论是对称还是不对称加密。[/quote] 返回的报文类似。客户端在第一次给服务器发数据的时候,就临时生成一对公钥和私钥,并把公钥发送给服务端。服务端把返回的报文用请求中附带的公钥加密,客户端收到报文后再用临时生成的私钥解密。 [/quote] 需要注意的是,客户端发给服务端的公钥,也是用服务端提供的公钥加密过的。[/quote] 嗯,是的。也可以开始用HTTPS协商一个对称密钥~谢谢了!
svenwang 2014-11-03
  • 打赏
  • 举报
回复
引用 3 楼 svenwang 的回复:
[quote=引用 2 楼 janchin 的回复:] [quote=引用 楼主 janchin 的回复:] 个人在这方面没什么经验,只是需要用到一些加密的。特别是通讯这方面。 1. 通过java的本身的加密工具,对数据进行加密,然后传输。那App被反编译之后。密钥之类的都一览无余。抓取密文之后,按照反编译后的代码逻辑自己写个解密过程就行了。。。 2. 通过JNI调用,so中的函数对数据进行加密。这个就有以下几种情况了: (1)如果加解密都在so里面,那么native方法很容易被找到。找到native方法后,抓取密文信息,自己将so拿出来,调用解密函数就行了。 (2)如果解密在服务端。将抓取的密文发送服务端解密,然后再调用本地的(通信层的)解密方法一样可以看到明文。 这样,虽然请求没有破解,但是返回报文存在被破解的可能性。。。 想来想去 没有很好的解决方案啊~~求教。。。
那返回报文呢?你服务器加密之后肯定是由客户端解密,只要客户端解密,就可以被破解出来。无论是对称还是不对称加密。[/quote] 返回的报文类似。客户端在第一次给服务器发数据的时候,就临时生成一对公钥和私钥,并把公钥发送给服务端。服务端把返回的报文用请求中附带的公钥加密,客户端收到报文后再用临时生成的私钥解密。 [/quote] 需要注意的是,客户端发给服务端的公钥,也是用服务端提供的公钥加密过的。
svenwang 2014-11-03
  • 打赏
  • 举报
回复
引用 2 楼 janchin 的回复:
[quote=引用 楼主 janchin 的回复:] 个人在这方面没什么经验,只是需要用到一些加密的。特别是通讯这方面。 1. 通过java的本身的加密工具,对数据进行加密,然后传输。那App被反编译之后。密钥之类的都一览无余。抓取密文之后,按照反编译后的代码逻辑自己写个解密过程就行了。。。 2. 通过JNI调用,so中的函数对数据进行加密。这个就有以下几种情况了: (1)如果加解密都在so里面,那么native方法很容易被找到。找到native方法后,抓取密文信息,自己将so拿出来,调用解密函数就行了。 (2)如果解密在服务端。将抓取的密文发送服务端解密,然后再调用本地的(通信层的)解密方法一样可以看到明文。 这样,虽然请求没有破解,但是返回报文存在被破解的可能性。。。 想来想去 没有很好的解决方案啊~~求教。。。
那返回报文呢?你服务器加密之后肯定是由客户端解密,只要客户端解密,就可以被破解出来。无论是对称还是不对称加密。[/quote] 返回的报文类似。客户端在第一次给服务器发数据的时候,就临时生成一对公钥和私钥,并把公钥发送给服务端。服务端把返回的报文用请求中附带的公钥加密,客户端收到报文后再用临时生成的私钥解密。
janchin 2014-11-03
  • 打赏
  • 举报
回复
引用 楼主 janchin 的回复:
个人在这方面没什么经验,只是需要用到一些加密的。特别是通讯这方面。 1. 通过java的本身的加密工具,对数据进行加密,然后传输。那App被反编译之后。密钥之类的都一览无余。抓取密文之后,按照反编译后的代码逻辑自己写个解密过程就行了。。。 2. 通过JNI调用,so中的函数对数据进行加密。这个就有以下几种情况了: (1)如果加解密都在so里面,那么native方法很容易被找到。找到native方法后,抓取密文信息,自己将so拿出来,调用解密函数就行了。 (2)如果解密在服务端。将抓取的密文发送服务端解密,然后再调用本地的(通信层的)解密方法一样可以看到明文。 这样,虽然请求没有破解,但是返回报文存在被破解的可能性。。。 想来想去 没有很好的解决方案啊~~求教。。。
那返回报文呢?你服务器加密之后肯定是由客户端解密,只要客户端解密,就可以被破解出来。无论是对称还是不对称加密。
svenwang 2014-11-03
  • 打赏
  • 举报
回复
有很好的解决方案,就是用RSA加解密算法。 客户端用公钥加密,服务端用私钥解密。 公钥本身是公开的,客户端代码公开也没有关系,没有私钥就没有办法解密。

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧