@前言:最近我的项目遇到一个问题,就是有一个需要是 cs 端数据须要加密(应用 sm4 的加密办法),后端接管须要解密,然而 cs 端是 c# 写的 后端是 java 写的,两端的加密形式 的后果都会有所不同,当然还是咱们这帮菜逼对算法这块钻研不深。前面找了调用两头的 c 语言去弄 还是没有搞好,最初找的了一种办法,就是把 java 代码打成 jar 包 而后转换成 dll,供 cs 端调用。
步骤 一、将曾经编译后的 java 中 Class 文件进行打包;打包命令 JAR
打包:能够应用命令 也能够应用 eclipse 和 idea 这样的工具间接打包【源码会放在最初】
二、到 IKVM 官方网站下载 IKVM 须要的组件 http://www.ikvm.net/
网上有一大堆教程 有很多没有提到 jdk 版本跟这个有关系,如图所示的反对 1.8 版本的,这个不向低版本兼容哦,如果找不到这个版本的 ikvm 能够私聊我。
三、设置门路
解压 ikvm-8.1.5717.0.zip, 能够设置 IKVM_HOME 的门路到环境变量,也能够间接应用固定的门路配置进去,我这里是 间接把残缺的门路配置进去的
四、将 java 的 jar 包转换为.dll 控件
应用的命令:ikvmc -target:library xxx.jar 和 ikvmc -target:library -reference: 需援用 A.dll -reference: 需援用 B.dll 主的.jar
前者命令是把 jar 打成 dll 后者是把 jar 打成 dll 的同时 退出他须要内部引入的 dll 包(原 jar 包援用)
ps: 我这边是把 jar 包都复制到 ikvm 的 bin 目录下,并且在 bin 的目录下应用的 ikvmc 命令,如果是应用 idea 引入的是把所有的 lib 包放在一个目录下 在 modules 引入的,只须要把主 jar 包打成一个 dll 就行了 其余不用援用到 cs 外面去,elipse 则是都须要打成 dll 都引入。【这里是看理论状况而言,最好是都打成 dll 引入】
五、在 C# 我的项目中增加所需的控件
#### 前提须要下载:ikvm,不然会报错
#### 援用打包好的 dll
当初就能够应用了
java 源码地址:https://gitee.com/ten-ken/sec…
本文来源于:程序员 ken,专属平台有 csdn、思否 (SegmentFault)、简书、开源中国 (oschina)、掘金,转载请注明出处。