Java和移动端交互

解密m3u8视频合并:从猫抓插件到本地文件修改全流程 本文详细解析了m3u8视频合并的全流程,特别针对加密视频片段提供了解决方案。从使用猫抓插件捕获m3u8文件地址,到利用N_m3u8DL-CLI工具自动下载、解密并合并ts片段,手把手教你处理AES-128加密等常见问题,最终生成完整的本地MP4文件,适合需要备份或处理流媒体资源的用户。 阅读详情

Java和移动端交互

我们开发java EE项目,不止有B/S模式,还有C/S模式,也就是客户端-服务端的方式,现在的主流客户端基本都是移动端,那么java如何和移动端交互呢

其实对于任何模式的请求来说,都没有任何区别,因为他们最终都被封装为java总的request对象,所以在我们的java服务的来说我们是不需要做什么改动的,只是因为移动端我们返回一个页面给它的话它解析起来比较麻烦,所以移动端都是以返回json数据的格式操作,也就是相当于我们在html中的ajax异步请求返回json的操作

 

加密

因为http协议的原因,它会将数据以明文的方式进行发送,所以http协议是不安全的,我们应该将数据进行响应处理之后再发送

app的开发和网页开发不一样,http协议中网页中对无法对数据进行加密处理,app因为是代码开发的,可以方便对数据加密,防止敏感数据被窃取

加密方式

对称性加密

所谓的对称性加密指的是加密密码和解密密码一致的加密方式,也就是在服务端和客户端上面都要保存有密码,这种方式适合对安全性能要求没有那么高的产品,主要是方式数据在通信过程中被破解,但是如果客户端被破解,则会暴露密码

常见对称加密方式

DES

 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来

AES

 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用

非对称性加密

区别于对称性加密,费对称性加密指的是加密和解密密码不一致的方式,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法

常见非对称加密方式

RSA

 RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作,HTTPS的证书使用的便是RSA

 

非加密方式

 有一些我们经常会被误认为是加密的非加密算法,在实际开发中,我们经常会口误将其表达为加密,下面我们列出一些非加密方式

MD5

MD5是最常见的非加密方式,也是被误认为是加密最多的方式,MD5其实是一种基于消息摘要算法实现的散列函数,用于确保信息传输完整一致,主要用于校验,数据库中存放的是原始内容的MD5值,然后将传递过来的内容转换为MD5,之后进行比较,如果一致,则代表输入正确,MD5是不可逆的,网上的所谓解密网站其实是通过不断计算存储各种数据的MD5,然后将输入的MD5和数据库中存储的进行比较得到的结果

MD5算法具有以下特点:

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

SHA

安全散列算法SHA,是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。SHA-1,SHA-224和SHA-256适用于长度不超过2^64二进制位的消息。SHA-384和SHA-512适用于长度不超过2^128二进制位的消息

 

使用方式

非对称使用方式

在和移动交互中,包括和网页的交互中,使用非对称加密的方式进行加密是安全级别最高的,其实我们只需要将网站修改为https即可,服务端不需要做任何事情,只需要移动端做处理即可,但是注意,使用https的话,如果使用的是非浏览器认为的安全机构签名的证书或者自制证书,浏览器会警告网站不安全,但是不影响通讯
配置https的方式,请参考 tomcat配置https的文档

 

对称性使用方式

对称性方式是普通app中最常见的加密方式,使用简单,也有一定安全性,使用代码网上一搜索一大堆,需要注意的是,我们加密后的数据是二进制数据,是无法直接转换为字符串发送到服务端的,如果直接转换会导致数据的丢失,导致无法解密,所以我们需要配合BASE64编码的方式将其转换为字符串

代码

因为双方操作的一致性,所以我们只需要写一份代码工具类,然后给移动端即可,仅限于android,ios需要单独写,使用方式

加密:

1.使用encryptNew方法将要传递的字符串进行加密,得到byte数组

2.使用parseByte2HexStr将加密后的byte数组转码为字符串,此字符串和原始内容不一致

解密:

1.收到数据后,首先调用parseHexStr2Byte将参数进行解码,变回原始的加密后数据

2.将第三步的返回结果作为参数调用decryptNew得到一个解密后的byte数组,这数组是原始内容的数组,可以直接new为字符串

服务端需要向客户端返回加密的数据,使用步骤同上,只不过变为服务的加密,客户端解密

 

/**
 * Created by jackiechan on 17/2/27. 加密必须得保证数据安全性(解密后的数据正确性)
 * 加密工具类
 *    
 */

public class SecretUtils {


    /**
     *  Base64编码方法
     * 将二进制转换成16进制,将加密后的二进制数据转字符串
     *
     * @param buf
     * @return
     */
    public static String parseByte2HexStr(byte buf[]) {
       StringBuffer sb = new StringBuffer();
       for (int i = 0; i < buf.length; i++) {
           String hex = Integer.toHexString(buf[i] & 0xFF);
           if (hex.length() == 1) {
              hex = '0' + hex;
           }
           sb.append(hex.toUpperCase());
       }
       return sb.toString();
    }

    /**
     * Base64解码,将字符串解码为编码前的数据,即转回加密后的二进制数据,
     * 将16进制转换为二进制 ,利用上面的转换方式转出的显示内容需要先利用此方式转码后解密用
     *
     * @param hexStr
     * @return
     */
    public static byte[] parseHexStr2Byte(String hexStr) {
       if (hexStr.length() < 1)
           return null;
       byte[] result = new byte[hexStr.length() / 2];
       for (int i = 0; i < hexStr.length() /

Ubuntu 22.04/24.04 安装 ROS2 完整教程(Humble / Jazzy) 最后更新:2026年2月适用系统:Ubuntu 22.04 LTS(Jammy) / Ubuntu 24.04 LTS(Noble)适用架构:x86_64 / arm64(包括树莓派) 阅读详情

相关推荐

从零搭建医疗化验单识别系统:深度学习+OCR实战教程(附数据集)

本文详细介绍了如何从零开始构建一个医疗化验单智能识别系统。通过融合深度学习和OCR技术,系统能够应对版式多样、内容专业的医疗单据,实现从文本检测、识别到关键信息结构化抽取的全流程。文章提供了数据集处理、模型选型、训练微调及工程化部署的实战指南,并分享了避坑经验与性能优化策略,为开发者解决医疗信息化痛点提供了完整的技术方案。

k9l0m1的博客 492

用Cadence IC618仿真双平衡吉尔伯特混频器:从原理图到后仿的完整避坑指南

本文详细介绍了在Cadence IC618环境中设计双平衡吉尔伯特混频器的全流程,包括原理图设计、仿真优化和版图实现。通过实战案例分享,重点解析了设计中的关键技巧和常见问题解决方案,帮助工程师高效完成高性能混频器设计,特别适合射频前端开发人员参考。

weixin_42656416的博客 162

TP-LINK电信定制摄像头刷机教程:解锁官方功能与固件升级

固件是嵌入式设备的操作系统,控制着硬件的基础功能。其工作原理是通过更新或替换存储在设备非易失性存储器中的程序代码,从而改变设备的行为和功能。这项技术的核心价值在于赋予用户对设备的完全控制权,能够解除厂商或运营商的软件限制,实现功能自定义、性能优化和安全更新。在智能家居、网络设备和物联网领域,固件升级与刷机是常见的工程实践,用于修复漏洞、增加新特性或适配不同平台。本文聚焦于利用TFTP恢复模式这一通用网络设备维护机制,针对TP-LINK电信定制版摄像头,提供一套完整的刷机方案,将设备刷入官方通用版固件,以解除

weixin_34205826的博客 493

【DDR3 控制器设计】(1)MIG IP 核的详解与配置

2:1 比例的用户接口数据总线宽度是 MIG 内存接口宽度的 4 倍,比如 MIG 中配置的数据位宽是 16 位,而 DDR 双边采样,所以用户接口是 MIG 内存接口的 4 倍即数据位宽为 64 位,同理可以得到如果设置为 4:1 则是 8 倍的数据位宽即数据位宽为 128 位。这里选择不使用OFF。以下为 MIG 和 DDR 之间的连接框图,可以看到框图的左边是用户接口,中间是 MIG 核,右边是需要控制的 DDR 接口,用户只需要去配置使用 MIG 核,就可以对 DDR 进行控制读写等操作。

记录学习历程 5359

华为OD机试真题 新系统 2026-04-22 C++ 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 167

【嵌入式硬件】DRV8874电机驱动

1)N沟道H桥电机驱动;2)驱动1个双向有刷直流电机;3)2个单向有刷直流电机;4)4.5V-37V工作电压范围;5)集成电流感测和调节;6)成比例电流输出(IPROPI);7)可选电流调节(IMODE):逐周期或固定关断时间;8)支持1.8、3V、5V逻辑输入;9)集成保护:欠压、电荷泵欠压、过流保护、输出关闭、热关断、自动故障恢复。

qq_39200110的博客 4423

使用 ABAP 代码动态创建新的 Function Module

通过内表。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6906

Python爬取上市公司年报并进行财务比率分析:基于异步爬虫与数据挖掘的实战

在当今数据驱动的投资时代,获取并分析上市公司财务数据对于投资者、分析师和研究人员至关重要。中国证监会指定的上市公司信息披露网站——巨潮资讯网,包含了所有A股上市公司的年报、季报及其他公告信息。本项目将展示如何使用Python最新技术栈爬取巨潮网的年报数据,提取关键财务指标,并进行深入的财务比率分析。本文将采用异步爬虫技术提高数据采集效率,使用现代解析库处理PDF和HTML文档,并结合pandas进行数据分析和可视化。整个过程将遵循合规合法的爬虫伦理,尊重网站robots.txt协议,设置合理的请求间隔。

2201_76125261的博客 666

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: JVM的内存模型
下一篇: Javascript脚本之清除浏览器历史数据
千锋-陈.Mr
博客等级 码龄8年 50粉丝 224原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值