针对django的check_password()方法用java编写类似的验证

本文介绍了如何在Java中实现与Django的`check_password()`方法类似的功能,主要关注PBKDF2PasswordHasher加密算法的应用,以满足特定业务需求。

业务需要到记录一下,直接上代码


import lombok.extern.slf4j.Slf4j;

import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.util.Base64;
import java.util.Random;

/**
 * @author :smallkinghjm
 * @description:因为需要和django的的系统兼容,这里模拟django的check_password()方法实现对用户密码的加密及验证,只保证验证成功的版本
 * jdk:1.8
 * 加密算法:pbkdf2_sha256
 * @date :2022/3/4 13:19
 */
@Slf4j
public class CryptoUtil {
   
   

    private static Integer DEFAULT_ITERATIONS = 20000;//默认迭代次数
    public static String algorithm = "pbkdf2_sha256";

    private static String getEncodedHash(String password, String salt, int iterations) {
   
   

        // 仅返回整个编码密码的最后一部分
        SecretKeyFactory keyFactory = null;
        try {
   
   
            keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
        } catch (NoSuchAlgorithmException e) 
软件设计与实施方案 一、总体架构设计 本项目采用分层架构,主要包括数据层、模型处理层、语义分析层、可视化层和接口层。各层功能如下: 数据层:负责多源数据的导入与管理,支持osgb、fbx、obj、if、jpg等格式。 模型处理层:实现模型编辑、结构重塑、轻量化处理、自动纹理映射等核心功能。 语义分析层:负责要素智能识别、语义分类、几何与空间结构关联。 可视化层:支持三维平台展示,二三维窗口数据染色,模型质量误差图实时更新。 接口层:实现数据输出与格式转换,支持citygml、3dshp、obj、fbx等主流格式。 二、详细模块设计 1. 多源数据导入模块 支持osgb、fbx、obj、if、jpg等格式数据的导入。 自动识别数据类型并解析元数据。 支持批量导入与数据校验。 主要组件:数据格式识别器、数据解析器、批量导入管理器、数据校验器。 主要接口:import_data(file_path), batch_import(file_list), validate_data(model)。 2. 模型编辑模块 支持模型移动、旋转、缩放、调整高程。 支持增加点、删除点、面编辑等操作。 支持多种模型面的编辑方式。 主要组件:几何编辑器、属性编辑器、操作历史管理器。 主要接口:move_model(model_id, vector), edit_vertex(model_id, vertex_id, new_pos), add_vertex(model_id, position), delete_vertex(model_id, vertex_id)。 3. 智能语义化模块 智能识别建筑、垃圾桶、路灯等要素。 自动语义分类与标签生成。 支持几何与空间结构信息关联。 主要组件:语义识别引擎、分类器、语义标签管理器。 主要接口:semantic_classify(model), associate_geometry(model, semantic_tag), import_osm_weta(data_path)。 4. 智能模型编辑模块 支持结构化单体建模与城市楼群建模。 支持模型结构重塑。 主要组件:结构化建模器、楼群生成器、结构重塑工具。 主要接口:remodel_structure(model), generate_building_cluster(params)。 5. 模型轻量化模块 自动减面处理,保证单对象≤10000面。 支持多格式模型的轻量化处理。 主要组件:减面算法库、批量处理器、格式转换器。 主要接口:simplify_model(model, max_faces), batch_simplify(models, max_faces), convert_format(model, target_format)。 6. 数据质检模块 识别模型精度,标注误差。 生成误差图,实时更新。 主要组件:精度检测器、误差分析器、误差图生成器。 主要接口:check_precision(model), generate_error_map(model), update_error_map(model)。 7. 纹理映射模块 自动纹理检索与贴图。 支持二维窗口影像编辑。 主要组件:纹理检索器、纹理贴图工具、影像编辑器。 主要接口:auto_map_texture(model, image_path), edit_texture_window(model, window_params)。 8. 数据输出模块 支持citygml、3dshp、obj、fbx等格式输出。 支持纹理合并与语义信息无损输出。 支持格式转换。 主要组件:输出格式管理器、纹理合并器、语义信息导出器。 主要接口:export_model(model, format, output_path), merge_textures(models, texture_size), export_semantics(model, output_path)。 9. 可视化与平台对接模块 支持WebGL三维平台展示。 支持二三维窗口数据染色与交互。 主要组件:WebGL渲染器、交互控制器、数据染色工具。 主要接口:render_model_webgl(model), colorize_data_window(model, color_params), bind_platform_api(api_config)。 三、关键技术方案 多源数据导入采用插件式架构,便于扩展新格式。 智能语义化与模型编辑结合深度学习与图形学算法,实现自动识别与分类。 轻量化建模集成高效减面算法,支持批量处理。 数据质检自动生成误差图,实时指导模型修改。 纹理映射自动检索与贴图,支持影像编辑。 数据输出支持主流格式转换,语义信息无损保存,纹理合并可配置。 可视化层支持WebGL三维展示与交互。 四、实施流程 需求分析与原型设计:明确各功能模块需求,设计交互流程与界面原型。 技术选型与环境搭建:选用Python/C++/JavaScript等技术栈,搭建开发环境。 核心功能开发:分模块开发,集成各核心功能。 平台集成与可视化展示:集成WebGL三维展示平台,实现模型可视化与交互。 测试与优化:自动化测试、性能测试与稳定性测试,优化算法与界面交互。 部署与运维:部署至目标平台,提供用户培训与技术支持,持续维护与升级。 五、关键指标保障措施 采用高效减面算法,确保单对象面数≤10000。 优化数据结构与渲染流程,提升可视化性能与交互体验。 支持批量建模与高并发处理,保障数据承载量。 设计标准化接口,确保与主流平台无缝对接。 六、项目交付物 产品说明书/功能测试报告 软件安装包与部署文档 用户操作手册 源代码与API文档 测试用例与测试报告 扩写以上内筒
最新发布
09-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值