kotlin获取与修改音视频文件MD5

kotlin 加密算法工具类 包含了: AES加密算法 DES加密算法 CBC/ ECB加密模式 MD5加密算法 RSA加密算法 SHA1加密算法 SHA256加密算法 立即下载

有一个需要修改视频文件MD5的需求,修改文件(在文件末尾添加内容)可到达这个目的,并且文件能正常播放。此方法主要是针对音视频文件等无法编辑的文件。

import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.security.MessageDigest

object MD5Util {
    /**
     * 获取文件MD5
     */
    fun getFileMD5(path: String?): String? {
        if (path.isNullOrEmpty()) {
            return null
        }
        var digest: MessageDigest? = null
        var fileIS: FileInputStream? = null
        val buffer = ByteArray(1024)
        var len = 0
        try {
            digest = MessageDigest.getInstance("MD5")
            val oldF = File(path)
            fileIS = FileInputStream(oldF)
            while (fileIS.read(buffer).also { len = it } != -1) {
                digest.update(buffer, 0, len)
            }
        } catch (e: Exception) {
            e.printStackTrace()
            return null
        }finally {
            fileIS?.close()
        }
        return bytesToHexString(digest?.digest())
    }

    /**
     * 通过修改文件内容修改文件MD5
    */
    fun changeFileMD5(path: String?) {
        if (path.isNullOrEmpty()) {
            return
        }
        var fileIS: FileInputStream? = null
        var fileOS: FileOutputStream? = null
        val buffer = ByteArray(1024)
        var len = 0
        try {
            val oldF = File(path)
            val sb = StringBuilder(path)
            sb.insert(path.lastIndexOf("/") + 1, "new") //在文件名前插入new,区分源文件
            val newF = File(sb.toString())
            fileIS = FileInputStream(oldF)
            fileOS = FileOutputStream(newF)
            while (fileIS.read(buffer).also { len = it } != -1) {
                fileOS.write(buffer)
            }
            fileOS.write(System.currentTimeMillis().toString().toByteArray()) //在文件末尾添加当前时间戳
            newF.renameTo(oldF)//覆盖到源文件
        } catch (e: Exception) {
            e.printStackTrace()
        }finally {
            fileOS?.close()
            fileIS?.close()
        }
    }

    fun bytesToHexString(src: ByteArray?): String? {
        val result = StringBuilder("")
        if (src?.isEmpty()==true) {
            return null
        }

        src?.forEach {
            var i = it.toInt()
            //这里需要对b与0xff做位与运算,
            //若b为负数,强制转换将高位位扩展,导致错误,
            //故需要高位清零
            val hexStr = Integer.toHexString(i and 0xff)
            //若转换后的十六进制数字只有一位,
            //则在前补"0"
            if (hexStr.length == 1) {
                result.append(0)
            }
            result.append(hexStr)
        }
        return result.toString()
    }

}
mp3音乐信息解析+MD5信息加密 用来解析mp3文件的信息~还有MD5加密字符与文件的代码,方便快捷的使用哟~~ 立即下载

相关推荐

cadence Virtuoso ADE原理图库中的VCVS(压控电压源)使用

Symbol: vcvs (Voltage Controlled Voltage Source) Vop−Von=egain⋅(Vip−Vin)V_{op}-V_{on}=egain\cdot(V_{ip}-V_{in})Vop​−Von​=egain⋅(Vip​−Vin​) 所以可以得出 ⟹Vop=egain⋅(Vip−Vin)+Von\Longrightarrow V_{op}=egain\cdot(V_{ip}-V_{in})+V_{on}⟹Vop​=egain⋅(Vip​−Vin​)+Von​ 使

大学生视野 2万+

Kotlin计算文件MD5

【代码】Kotlin计算文件MD5。

GGGL的专栏 1240

Cursor 使用教程(2025年更新版)

官方Cursor详细使用教程在“扩展学习”

我是赛博AI Lewis 7082

Java / Kotlin 如何使用 MD5 等摘要算法加密

而并非 String 字符串,这对于部分安全框架已经足够使用(如Ktor-Authentication),但是大多数时候我们更需要加密后的内容具备可读性,直接使用 new String(ByteArray) 是不可行的,结果会是乱码,因为返回的数组其实是。显然,使用 BigInteger 更符合我们平常所见到的样式,当然 BASE64 也非常好用,看你自己的喜好。获取到的算法返回的是一个。

qq_41567818的博客 1713

Windows11 下 Detectron2 的安装与配置全攻略

本文提供了在Windows11系统下安装和配置Detectron2的完整教程。详细介绍了从环境准备、创建虚拟环境、安装PyTorch与CUDA,到修改源码、编译安装以及运行验证Demo的全过程,帮助开发者克服Windows平台上的常见问题,成功部署这一强大的计算机视觉库。

weixin_29081703的博客 246

Win11下高效管理JDK1.8与JDK17双环境的实战指南

本文提供了一份在Windows 11系统上高效管理JDK 1.8与JDK 17双环境的实战指南。文章详细讲解了如何实现双版本切换,包括如何干净安装两个JDK、通过巧妙配置环境变量实现命令行一键切换,以及在不同IDE和构建工具中为项目独立配置JDK版本,旨在帮助Java开发者彻底解决版本冲突问题,提升开发效率。

ipfs8storage的博客 543

Kotlin中MD5加密方式

fun encode(text: String): String { try { //获取md5加密对象 val instance: MessageDigest = MessageDigest.getInstance("MD5") //对字符串加密,返回字节数组 val digest:ByteArray = instance.diges

杨伟乔-一个极客的世界 1万+

探索robotics-toolbox-python:从基础安装到高级机器人运动学应用

本文详细介绍了robotics-toolbox-python工具箱,从基础安装、环境配置到机器人运动学与动力学的核心应用。通过D-H参数、URDF导入和内置模型三种方式快速构建机器人模型,并演示了正逆运动学计算、关节空间与任务空间轨迹规划以及三维可视化仿真。该工具箱极大地简化了机器人算法开发流程,是进行机器人学研究和应用实践的强大工具。

i1j2k的博客 496

第八章 kotlin-消息摘要md5、sha1、sha256

第 文章目录第前言一、e1.演示4.片总结 前言 kotlin与gradle。 一、e 1.演示 工 4.片 首 总结 以上就是今天要讲的内容,本文仅仅简单介绍了kotlin的其他基础知识。下一章将介绍kotlin与gradle。 ...

u013324488的专栏 2081

损失函数大汇总(八)(IoU Loss附公式推导与代码)

本文详细介绍了IoU Loss及其在图像分割中的应用。IoU(交并比)是衡量预测区域与真实区域重叠程度的指标,IoU Loss定义为1-IoU,直接优化区域重叠质量。文章推导了IoU的数学表达式和梯度计算,分析了其函数特性:全局耦合梯度、对漏检误检的双重惩罚、适合类别不平衡任务。与Dice Loss相比,IoU更强调覆盖质量而非相似度。实际应用中IoU Loss常与BCE组合使用,前者保证训练稳定性,后者优化整体区域质量。文章还提供了IoU Loss的代码实现,适用于二值分割、小目标提取等场景,特别当任务评

悦学共鸣,温柔以待,汇聚光芒,共同成长 414

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

Kotlin版本的MD5加密算法

fun encode(password: String): String { try { val instance:MessageDigest = MessageDigest.getInstance("MD5")//获取md5加密对象 val digest:ByteArray = instance.digest(password.to

changjinglubeipan的博客 7950

DeepSeek+即梦:AI视频创作从0到1全突破

本文为 DeepSeek 与即梦生成视频全攻略,从前期注册登录、熟悉工具界面及硬件网络准备入手,助读者开启 AI 视频创作。详细阐述利用 DeepSeek 构思脚本、即梦实现画面生成与静态图转动态视频的方法,包括提示词编写、参数调整等技巧。同时介绍后期合成音画、添加字幕特效及多平台适配要点,结合实战案例解析全流程。还分享进阶提示词优化、版权注意等避坑指南,为创作者提供从 0 到 1 的 AI 视频创作完整解决方案。

邓邓子的博客 8107

kotlin写的音视频app(已开源)

目前项目持续更新重构中(目前项目已经转型到kotlin了)Life is a Multimedia information app based on Material Design Kotlin + MVP + RxJava + Retrofit + Dagger2 + GreenDAO + Glidelife 是一个多媒体信息app,基于Material Design Kotlin + MVP

欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记 4781

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Basic-Video-Call开发者指南:Kotlin与Swift实现一对一视频通话

Basic-Video-Call是一个功能完整的开源视频通话项目,支持加入/离开频道、静音/取消静音、启用/禁用视频以及切换前后摄像头等核心功能。本指南将带你快速掌握如何使用Kotlin和Swift语言构建高质量的一对一视频通话应用。 ## 📋 项目准备与环境配置 ### 克隆项目仓库 首先需要获取项目源码,在终端中执行以下命令: ```bash git clone https://gitc

gitblog_01136的博客 219

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

安全让AI控制Linux桌面:computer-use-linux威胁模型与安全设计完全解析

computer-use-linux 是一个为 AI Agent 提供原生 Linux 桌面控制能力的 MCP 服务器与 CLI 工具,支持 AT-SPI 语义树、截图、窗口定位与跨 GNOME/KDE/Hyprland 等桌面的输入合成。本文完整解析它的威胁模型与安全设计:工具权限分级、默认关闭的高危开关、输入后端隔离、密码遮罩等机制,帮助你在部署前就看清"AI 碰你桌面"到底碰了哪里、边界在哪

gitblog_00483的博客 204

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

如何一次性理顺Windows右键菜单:免费开源工具ContextMenuManager快速上手

试着右键一个文件,看看菜单有多长?如果是两屏起步,想找到"重命名"还得滚一次鼠标轮,那说明该收拾了。ContextMenuManager 是一款免费的开源 Windows 右键菜单管理工具,绿色免安装,专门用来启用或禁用、修改、新增右键菜单项。它只盯着右键菜单这一件事,不碰系统设置,也不批量扫盘。 ## 三分钟跑起来的步骤 1. **获取程序**。它不是传统安装程序:从仓库发布页下载 zip

gitblog_00103的博客 714

深度解析Sqorn表达式构建器:用e构建带类型安全的SQL条件、数学与字符串运算

Sqorn 是一款面向 JavaScript 的 SQL 查询构建库,而它的**表达式构建器 `e`** 是其中最精巧、也最容易被新手忽略的部分。本文带你深度解析 Sqorn 表达式构建器:如何用 `e` 以链式、可组合、类型安全的方式,轻松构建 SQL 条件、数学运算与字符串运算,并生成天然防 SQL 注入的参数化查询。哪怕你刚接触 Sqorn,读完也能立刻上手。 [![Sqorn 表达式构建

gitblog_00669的博客 642

从满屏广告到干净桌面只用 0.5 秒:开源电视桌面 Aerial 全拆解

按一下遥控器主页键,0.5 秒内,满屏推荐流的原装桌面被换成一块干净的应用网格——这是开源 Android TV 桌面 Aerial 的招牌动作。参照 tvOS 设计,开机自动接管,待机杀不死,还带着 Apple TV 同款航拍屏保,开源首日增星数百。 本文直接进仓库:从 2384 行的守护服务源码,到 114 段航拍目录的降级播放链,再到性能优化前后的帧耗时对比,逐处拆给你看。不复述 READ

gitblog_00448的博客 418

基于 yt-dlp 的 Android 音视频下载器 Seal:核心功能、源码机制与实战安装指南

Seal 是一款面向 Android 的开源视频/音频下载应用,本质上是一层包装在 yt-dlp(原 youtube-dl)之上的简洁 GUI,由 [translations/README-id.md](https://link.gitcode.com/i/38c714ffd726a898ac3d1a4379aaedaf)(印度尼西亚语版 README)对它的定位、功能、下载方式与技术栈做了完整说

gitblog_00842的博客 463

2 步跑通 Cerebro 全局启动器:一个输入框搞定日常操作

Cerebro 是一个开源桌面启动器。你在任意界面按下全局快捷键,屏幕上就会浮出一个输入框,打字即可完成任务:启动应用、搜索网页、计算数值、打开文件。 ## 和普通启动器的差别 没有 Cerebro 时,你想做一件小事要经历完整链路:切窗口、找图标、点菜单,动作分散在屏幕各处。装上之后,所有入口收敛到同一个输入框:结果列在下方,用 `ctrl+1` 到 `ctrl+9` 直接选中某一条,回车执

gitblog_00975的博客 173

RikkaHub web-ui 前端架构深度解析:React Router 7 SPA、Zustand 状态流与 Kotlin 后端的实时协同

RikkaHub 是一个支持多 LLM 提供商的 Android 应用,而 `web-ui` 是其嵌入式 Web 前端:基于 React Router 7 的单页应用(SPA),构建产物经 `copy.ts` 复制到 Ktor 后端静态目录,由同一进程对外提供界面与 API。本文以仓库内 [web-ui/CLAUDE.md](https://link.gitcode.com/i/f8e2ffd37

gitblog_01198的博客 601

为 AI 编码代理打造的 RetroMusicPlayer 仓库开发指南:AGENTS.md 深度解析

> 本文以仓库根目录的 [AGENTS.md](https://link.gitcode.com/i/93bd688a8752494b5c34b8c404f68f8f) 为主体骨架,结合 RetroMusicPlayer(一款 Material You 设计的 Android 本地音乐播放器)的真实源码与构建配置,系统解读这份面向编码 Agent 的工程手册:从模块与 flavor 划分、构建验证

gitblog_00018的博客 681

Animeko(Ani)一站式弹幕追番平台技术解析:Kotlin Multiplatform 架构、聚合数据源与 BitTorrent 引擎

Animeko 是一个集"找番、追番、看番"于一体的一站式弹幕追番平台,支持云收藏同步(Bangumi)、离线缓存、BitTorrent 下载与弹幕云过滤,其客户端主体采用 100% Kotlin/Compose Multiplatform 实现。本文以仓库 [README.md](https://link.gitcode.com/i/eccc139a081e1b2018c2a61219a37b0

gitblog_00191的博客 527

kotlin入门!关于网络优化你必须要知道的重点,技术详细介绍

前言 **一年中第一段跳槽高潮就要来了,**看到同事一个个离职,又有一部分同事已经找到满意的工作,于是自己也盲目的开始面试起来(期间也没有准备充分),日夜奔走,简历投了很多家公司,然后就是一连串的面试蜂拥而来,但是很大一部分似乎技术面试还没有准备好,肚子里没有足够的存“货”,可能被面试官问到某个新的知识点或者你没有准备好的,而准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说)。 今天给大家分享下在跳槽时需要准备的Android面试宝典,其中大部分都是面试过程中的面试题,可

Sunbuyi的博客 193
上一篇: android studio依赖代理阿里仓库地址
下一篇: 基于Android Studio4.0的Profiler内存泄露排查方法
狂暴巴拉森
博客等级 码龄5年 101粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值