当前位置: 首页 > 知识库问答 >
问题:

跨平台加密失败

傅乐湛
2023-03-14

我正在更新一个密码加密实用程序,从完全自带的东西到一个围绕Jasypt和Bouncy Castle构建的。实用程序加密密码;然后,加密的字符串被补丁到属性文件中,并由Grails应用程序回读和解密。

我编写了一个Java命令行实用程序来加密密码。相关的Java代码是:

public class PasswordUtility {
    private final String SALT = "randomstring";
    private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();

    public PasswordUtility( String seed ) {
        String password = SALT + seed;
        encryptor.setProvider( new BouncyCastleProvider() );
        encryptor.setAlgorithm( "PBEWITHSHA256AND192BITAES-CBC-BC" );
        encryptor.setPassword( password );
    }

    public String decrypt( String encryptedText ) {
        String processText = encryptedText;
        return encryptor.decrypt( processText );
    }

    public String encrypt( String plainText ) {
        return encryptor.encrypt( plainText );
    }
}
class StringEncryptor {
    String salt = "randomstring"

    private StandardPBEStringEncryptor initCrypto( String keySplit ) {
        StandardPBEStringEncryptor pbe = new StandardPBEStringEncryptor()
        pbe.setProvider( new BouncyCastleProvider() )
        pbe.setAlgorithm( "PBEWITHSHA256AND192BITAES-CBC-BC" )
        String cryptKey = salt + keySplit
        pbe.setPassword( cryptKey )
        return pbe
    }

    String encrypt( String keySplit, String encryptText ) {
        StandardPBEStringEncryptor pbe = initCrypto( keySplit )
        pbe.encrypt( encryptText )
    }

    String decrypt( String keySplit, String encryptText ) {
        log.info encryptText
        log.info keySplit
        StandardPBEStringEncryptor pbe = initCrypto( keySplit )
        pbe.decrypt( encryptText )
    }
}

共有1个答案

马博学
2023-03-14

问题是输入的密码中有通配符。当我将这部分密码改为字母数字字符(或字母数字字符和一个破折号)时,加密程序是跨平台工作的。

 类似资料:
  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • 我需要在我的应用程序中为不同的标签指定不同的FontFamily。我需要使用默认字体(如Android的Roboto和iOS的Helvetica)及其修改(如轻、中、粗)。据我所知,我应该使用Roboto-Light和Helvetica-Light来获得字体的轻版本(中号和粗体相同)。除了这个需求之外,我还需要在XAML中设置字体(如文档中所描述的),所以我最终得到了以下代码 然而,在Androi

  • 作为第三代数据统计和分析平台,诸葛实现了对用户的实名(实账号)分析,并主张互联网产品分析以用户为中心的分析思想并提供了一系列方法论。对用户的唯一标识来源于企业自身数据库对用户的唯一识别符,也即诸葛底层数据采集是以用户为中心的采集,我们提供了跨平台分析版本, 满足企业以用户为中心的整体的分析需求,不同平台相同业务价值下的用户完整的故事解读(例如:分析电商的用户在PC端浏览产品,在移动端支付的转化率)

  • 说明 由于在跨端开发中,必不可少的会遇到不同端需要有不同实现的情况。参考滴滴chameleon中的多态,megalo中实现了类似的跨平台兼容方案。需要使用时,请保证@megalo/target的版本号大于或等于0.7.2。 js的跨平台兼容 megalo中下面两种形式的引用会被特殊处理: [path-to-name]/[name]/index.mpjs [path-to-name]/[name]

  • 问题内容: 我想在Unix和Windows上使用特定于平台的目录。请看一下代码: 这个输出 我想第二次打电话给(windows)类似 是否可以告诉我在Windows上运行的程序使用Windows分隔符?还是应该始终将反斜杠转换 为正斜杠()?这里首选的策略是什么? 问题答案: 我看到“问题”在哪里。在golang-nuts上的讨论为我提供了提示,该提示始终使用并且是用于依赖平台的操作的函数。 在W

  • 问题内容: 我想开发一个跨平台的应用程序。 Java是跨平台的吗?我的意思是,我可以在Windows中开发Java应用程序并在Mac OS X和Linux中使用它吗? 如果是,怎么办? 我发现用Java编写的应用程序有两个安装文件,一个用于Windows,另一个用于Mac。 这使我感到困惑。 任何插图或建议将不胜感激。 问题答案: Java是跨平台的吗? 从某种意义上说,Java是跨平台的, 即已