IBM DMC运行在RedHat 9的FIPS模式

news2024/12/23 13:22:25

文章目录

  • 环境
  • 步骤
    • 打开RedHat的FIPS模式
    • 安装DMC
    • nssdb
    • pk12util和certutil
    • 导入certificate
      • 导入Liberty的SSL key
      • 导入Java的certificate
      • 查看nssdb(可选)
    • 配置jvm.options
    • 配置server.xml
    • 配置java.security
    • 配置dswebserver_override.properties
    • 重启DMC
    • 验证
  • 常见问题
    • RedHat 7没有fips-mode-setup
    • secmod.db
  • 参考

环境

  • Red Hat Enterprise Linux release 9.2 (Plow)
  • IBM Data Management Console 3.1.12 for Linux (x86)
    • WebSphere Application Server Version 23.0.0.9 Liberty - (23.0.0.9-cl230920230904-1158)
    • JRE:
[root@kai12071 bin]# $CONSOLE_DIR/java/jre/bin/java -version
java version "17.0.8" 2023-07-18
IBM Semeru Runtime Certified Edition 17.0.8.0 (build 17.0.8+7)
Eclipse OpenJ9 VM 17.0.8.0 (build openj9-0.40.0, JRE 17 Linux amd64-64-Bit Compressed References 20230718_477 (JIT enabled, AOT enabled)
OpenJ9   - d12d10c9e
OMR      - e80bff83b
JCL      - 30f808c1763 based on jdk-17.0.8+7)

步骤

打开RedHat的FIPS模式

查看当前FIPS模式:

[root@kai12071 ~]# cat /proc/sys/crypto/fips_enabled
0

或者:

[root@kai12071 ~]# fips-mode-setup --check
FIPS mode is disabled.

打开FIPS模式:

[root@kai12071 ~]# fips-mode-setup --enable
Kernel initramdisks are being regenerated. This might take some time.
Setting system policy to FIPS
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
FIPS mode will be enabled.
Please reboot the system for the setting to take effect.

按照提示,重启一下电脑。

然后再次查看FIPS模式:

[root@kai12071 ~]# cat /proc/sys/crypto/fips_enabled
1

或者:

[root@kai12071 ~]# fips-mode-setup --check
FIPS mode is enabled.

可见,FIPS模式已打开。

安装DMC

DMC下载地址为: https://epwt-www.mybluemix.net/software/support/trial/cst/programwebsite.wss?siteId=1120&tabId=2917 ,如下图所示:

在这里插入图片描述

我下载的是DMC 3.1.12 for Linux (x64)的命令行安装包,文件名为: ibm-datamgmtconsole-3.1.12-linux.tgz

将其下载到 /root/Downloads/dmc3112 目录下。

解压: tar -zxvf ibm-datamgmtconsole-3.1.12-linux.tgz

运行 setup.sh ,安装DMC,具体安装过程略。

安装好DMC以后,用以下两个链接登录:

  • http://kai12071.fyre.ibm.com:11080/console
  • https://kai12071.fyre.ibm.com:11081/console

添加repo DB和monitored DB,确保DMC工作正常:

在这里插入图片描述

nssdb

确保系统已安装 nssdb

[root@kai12071 ~]# ll /etc/pki/nssdb
total 28
-rw-r--r-- 1 root root  9216 Dec  8 18:19 cert9.db
-rw-r--r-- 1 root root 11264 Dec  8 18:19 key4.db
-rw-r--r-- 1 root root   451 Mar 22  2023 pkcs11.txt

注:此处没有 secmod.db 文件,我们也不需要该文件,但是在我的测试中,若缺少该文件则会有问题(详见文末的常见问题)。解决办法就是创建一个空的 secmod.db 文件:

[root@kai12071 bin]# touch /etc/pki/nssdb/secmod.db

pk12util和certutil

确保系统已安装 pk12utilcertutil

[root@kai12071 ~]# which pk12util
/usr/bin/pk12util
[root@kai12071 ~]# which certutil
/usr/bin/certutil

注:可用 man pk12utilman certutil 查看用法。

列出nssdb里的certificate:

[root@kai12071 ibm-datamgmtconsole]# certutil -L -d /etc/pki/nssdb

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

可见,目前nssdb是空的。

导入certificate

为了方便,先export一些变量。

创建文件 export.sh 如下:

#!/bin/bash
export CONSOLE_DIR=/root/Downloads/dmc3112/ibm-datamgmtconsole
export NSSDB_PATH=/etc/pki/nssdb
export liberty_dsweb=${CONSOLE_DIR}/wlp/usr/servers/dsweb
export KEYSTORE_PASSWORD=password
export CONSOLE_CONF_DIR=${CONSOLE_DIR}/Config
export console_conf_file=${CONSOLE_CONF_DIR}/dswebserver_override.properties

添加 x 属性( chmod +x export.sh ),并运行脚本( . ./export.sh )。

导入Liberty的SSL key

[root@kai12071 ~]# pk12util -i ${CONSOLE_DIR}/wlp/usr/servers/dsweb/resources/security/key.p12 -W "$KEYSTORE_PASSWORD" -d $NSSDB_PATH -K "$KEYSTORE_PASSWORD"
pk12util: PKCS12 IMPORT SUCCESSFUL

查看nssdb:

[root@kai12071 ~]# certutil -L -d /etc/pki/nssdb

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

default                                                      u,u,u

注:本例中Certificate Nickname是 default ,在别的系统上有可能不同,一定要先看一下。

修改certificate属性:

[root@kai12071 ~]# certutil -M -n "default" -t "CT,CT,CT" -d ${NSSDB_PATH}

再次查看nssdb:

[root@kai12071 ~]# certutil -L -d /etc/pki/nssdb

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

default                                                      CTu,Cu,Cu

可见,属性并没有变成 CT,CT,CT ,不过貌似也没有关系。

注:对属性值 CTu 的解释,可参见 man certutil 。摘录如下:

  • C: Trusted CA (implies c)
  • T: trusted CA for client authentication (ssl server only)
  • u: means that there is a private key associated with the certificate. It is a dynamic flag and you cannot set it with certutil.

导入Java的certificate

通过Java自带的 keytool 工具,把cacerts由 JKS 类型转换为 PKCS12 类型,再导入nssdb。

首先确认 cacerts 文件已存在:

[root@kai12071 ~]# ls -al $CONSOLE_DIR/java/jre/lib/security/cacerts
-rw-r--r-- 1 root root 167595 Dec  8 18:08 /root/Downloads/dmc3112/ibm-datamgmtconsole/java/jre/lib/security/cacerts

转换类型:

[root@kai12071 ~]# $CONSOLE_DIR/java/jre/bin/keytool -noprompt -importkeystore -srckeystore $CONSOLE_DIR/java/jre/lib/security/cacerts -destkeystore /tmp/cacerts.p12 -srcstoretype JKS -deststoretype PKCS12 -deststorepass changeit -srcstorepass changeit
Importing keystore /root/Downloads/dmc3112/ibm-datamgmtconsole/java/jre/lib/security/cacerts to /tmp/cacerts.p12...
Entry for alias _,cro,ocertsign_sa,oucertsign_root_ca_g2 [jdk] successfully imported.
Entry for alias _,ccn,obeijing_certificate_authority,cnbjca_global_root_ca2 [jdk] successfully imported.
......
......

确保已生成目标文件:

[root@kai12071 ~]# ls -al /tmp/cacerts.p12
-rw-r--r-- 1 root root 187680 Dec  8 18:43 /tmp/cacerts.p12

导入nssdb:

[root@kai12071 ~]# pk12util -i /tmp/cacerts.p12 -W changeit -d $NSSDB_PATH
pk12util: PKCS12 IMPORT SUCCESSFUL

删除无用文件:

[root@kai12071 ~]# rm -f /tmp/cacerts.p12

查看nssdb:

[root@kai12071 ~]# certutil -L -d $NSSDB_PATH

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

default                                                      CTu,Cu,Cu
_,cro,ocertsign_sa,oucertsign_root_ca_g2 [jdk]               ,,
_,ccn,obeijing_certificate_authority,cnbjca_global_root_ca2 [jdk] ,,
_,cus,stillinois,lchicago,otrustwave_holdings,_inc,cntrustwave_global_certification_authority [jdk] ,,
......
......

修改certificate属性:

[root@kai12071 ~]# certutil -L -d $NSSDB_PATH | grep ",," | sed 's/ ,,.*//' | sed 's/ *$//' | while IFS= read -r line; do echo "Trust ${line} ..."; certutil -M -n "$line" -t "CT,CT,CT" -d $NSSDB_PATH; done
Trust _,cro,ocertsign_sa,oucertsign_root_ca_g2 [jdk] ...
Trust _,ccn,obeijing_certificate_authority,cnbjca_global_root_ca2 [jdk] ...
Trust _,cus,stillinois,lchicago,otrustwave_holdings,_inc,cntrustwave_global_certification_authority [jdk] ...
......
......

再次查看nssdb:

[root@kai12071 ~]# certutil -L -d $NSSDB_PATH

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

default                                                      CTu,Cu,Cu
_,cro,ocertsign_sa,oucertsign_root_ca_g2 [jdk]               CT,C,C
_,ccn,obeijing_certificate_authority,cnbjca_global_root_ca2 [jdk] CT,C,C
_,cus,stillinois,lchicago,otrustwave_holdings,_inc,cntrustwave_global_certification_authority [jdk] CT,C,C
......
......

查看nssdb(可选)

前面的工作都完成后,查看一下nssdb:

[root@kai12071 ~]# certutil -K -d ${NSSDB_PATH}
certutil: Checking token "NSS FIPS 140-2 Certificate DB" in slot "NSS FIPS 140-2 User Private Key Services"
< 0> rsa      642041b44793a07b6d67a9ef6f24ebac63caeb71   default

注: -K 表示列出key ID。

[root@kai12071 ~]# certutil -L -d ${NSSDB_PATH}

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

default                                                      CTu,Cu,Cu
_,cro,ocertsign_sa,oucertsign_root_ca_g2 [jdk]               CT,C,C
_,ccn,obeijing_certificate_authority,cnbjca_global_root_ca2 [jdk] CT,C,C
_,cus,stillinois,lchicago,otrustwave_holdings,_inc,cntrustwave_global_certification_authority [jdk] CT,C,C
......
......

配置jvm.options

${liberty_dsweb}/jvm.options 文件备份一下,然后修改文件,添加如下内容:

-Dsemeru.fips=true
-Djava.security.debug=semerufips
-Djavax.net.ssl.trustStoreType=PKCS11
-Djavax.net.ssl.trustStore=NONE
-Djavax.net.ssl.trustStoreProvider=SunPKCS11-NSS-FIPS

配置server.xml

${liberty_dsweb}/server.xml 文件备份一下,然后修改文件,找到如下内容:

<include location="${dshome}/Config/SSLConfig.xml" optional="true"/>

将其修改为:

<include location="${dshome}/Config/FIPSSSLConfig.xml" optional="true"/>

注: SSLConfig.xml 文件内容如下:

<server>
	<keyStore id="defaultKeyStore" password="${wlp.keystore.password}" location="${wlp.keystore.location}" type="${wlp.keystore.type}"/>
	<keyStore id="defaultTrustStore" password="${wlp.truststore.password}" location="${wlp.truststore.location}" type="${wlp.truststore.type}"/>
</server>

FIPSSSLConfig.xml 文件内容如下:

<server description="FIPS liberty SSL configuration">
	<!-- The FIPS SSL configuration. See https://www.ibm.com/support/pages/node/6612693 for more details -->
	<!-- Kesytore as defined by documentation: https://www.ibm.com/support/pages/node/6612693 -->
	<!-- Truststore not specified, will default to the specified keystore -->
	<!-- TLSv1.2 only although it might be enforced by FIPS already -->
	<!-- Ciphers list not specified, letting underlying FIPS configuration to decide which ciphers are appropriate -->
	<ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" sslProtocol="TLSv1.2"/>
	<keyStore id="defaultKeyStore" location="${dshome}/Config/pkcs11cfg.cfg" type="PKCS11-NSS-FIPS" fileBased="false" password="changeit" provider="SunPKCS11-NSS-FIPS"/>
</server>

配置java.security

${CONSOLE_DIR}/java/jre/conf/security/java.security 文件备份一下,然后修改文件,找到 # Java Restricted Security Mode 部分,添加如下内容:

RestrictedSecurity1.jce.provider.5 = SunJCE [{SecretKeyFactory, PBKDF2WithHmacSHA1, *}, \
    {SecretKeyFactory, PBKDF2WithHmacSHA224, *}, \
    {SecretKeyFactory, PBKDF2WithHmacSHA256, *}, \
    {SecretKeyFactory, PBKDF2WithHmacSHA384, *}, \
    {SecretKeyFactory, PBKDF2WithHmacSHA512, *}]

配置dswebserver_override.properties

备份 ${CONSOLE_CONF_DIR}/dswebserver_override.properties 文件,然后修改文件,添加如下内容:

FIPS_MODE=true

重启DMC

/root/Downloads/dmc3112/ibm-datamgmtconsole/bin 目录下,重启DMC:

[root@kai12071 bin]# ./restart.sh
Fri Dec  8 07:18:05 PM PST 2023 Stopping IBM Db2 Data Management Console

Stopping server dsweb.
Server dsweb stopped.
Fri Dec  8 07:18:07 PM PST 2023 Successfully stopped IBM Db2 Data Management Console.
Updating the application server bootstrap and environment properties ...
Updating the applications ...
Fri Dec 8 07:18:18 PM PST 2023 Starting IBM Db2 Data Management Console.

Starting server dsweb.
Server dsweb started with process ID 5287.
Fri Dec 8 07:18:20 PM PST 2023 Successfully started IBM Db2 Data Management Console.
******************************************************************************

Summary
	* Web console HTTP URL
 		http://kai12071.fyre.ibm.com:11080/console

	* Web console HTTPS URL
 		https://kai12071.fyre.ibm.com:11081/console

注:也可以先 ./stop.sh ,再 ./startup.sh

验证

登录DMC:

  • http://kai12071.fyre.ibm.com:11080/console
  • https://kai12071.fyre.ibm.com:11081/console

确保DMC工作正常。

在这里插入图片描述

至此,工作全部完成。

常见问题

RedHat 7没有fips-mode-setup

RedHat 8和9自带 fips-mode-setup ,可以直接用,但ReHat 7并没有该工具。

官网提供了在RedHat 7上如何手工打开FIPS模式的文档: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-federal_standards_and_regulations#sect-Federal_Information_Processing_Standard

注:我没有实际测试过。

secmod.db

在RedHat 8上, /etc/pki/nssdb 目录下的文件为:

[root@kai12101 ~]# ls /etc/pki/nssdb/
cert8.db  cert9.db  key3.db  key4.db  pkcs11.txt  secmod.db

在RedHat 8上, /etc/pki/nssdb 目录下的文件为:

[root@kai12071 ~]# ls /etc/pki/nssdb
cert9.db  key4.db  pkcs11.txt

我们实际使用时,并不需要 secmod.db 文件,但是在我的测试中,最后启动DMC的时候,虽然貌似能启动,但是实际并没有启起来。在Liberty的log文件 $CONSOLE_DIR/logs/messages.log 里,报错如下:

[12/8/23, 19:18:19:882 PST] 00000021 LogService-9-com.ibm.ws.config                               E CWWKE0701E: FrameworkEvent ERROR org.osgi.framework.BundleException: Exception in com.ibm.ws.config.internal.WSConfigActivator.start() of bundle com.ibm.ws.config.
        at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:839)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:767)
......
......
Caused by: java.lang.ExceptionInInitializerError
        at java.base/java.lang.J9VMInternals.ensureError(Unknown Source)
        at java.base/java.lang.J9VMInternals.recordInitializationFailure(Unknown Source)
......
......
Caused by: java.security.ProviderException: Could not initialize NSS
        at sun.security.pkcs11.SunPKCS11.<init>(Unknown Source)
        at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$1.run(Unknown Source)
......
......
Caused by: java.io.FileNotFoundException: /etc/pki/nssdb/secmod.db
        at jdk.crypto.cryptoki/sun.security.pkcs11.Secmod.initialize(Unknown Source)
        ... 42 more

注意其中的 java.io.FileNotFoundException: /etc/pki/nssdb/secmod.db ,可能Liberty启动时还是会检查该文件是否存在。

解决办法就是创建一个空的 secmod.db 文件:

[root@kai12071 bin]# touch /etc/pki/nssdb/secmod.db

参考

  • https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening#switching-the-system-to-fips-mode_using-the-system-wide-cryptographic-policies
  • https://epwt-www.mybluemix.net/software/support/trial/cst/programwebsite.wss?siteId=1120&tabId=2917
  • https://openliberty.io/docs/latest/enable-fips.html
  • https://stackoverflow.com/questions/11538988/nss-shared-db-not-working-with-sunpkcs11
  • https://www.ibm.com/docs/en/was-liberty/nd?topic=liberty-setting-up-fips-compliance
  • https://wiki.archlinux.org/title/Network_Security_Services

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1303857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

End-to-End Reconstruction-Classification Learning for Face Forgery Detection

一、研究背景 现有模型主要通过提取特定的伪造模式进行深度伪造检测&#xff0c;导致学习到的表征与训练集中已知的伪造类型高度相关&#xff0c;因此模型难以泛化到未知的伪造类型上使用。 二、研究动机 1.真实样本的特征分布相对更为紧凑&#xff0c;因此学习真实人脸之间的…

漏洞复现-华为Auth-HTTP服务器任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

MyBatis缓存机制流程分析

前言 在进行分析之前&#xff0c;建议快速浏览之前写的理解MyBatis原理、思想&#xff0c;这样更容易阅读、理解本篇内容。 验证一级缓存 MyBatis的缓存有两级&#xff0c;一级缓存默认开启&#xff0c;二级缓存需要手动开启。 重复读取跑缓存 可以看到&#xff0c;第二次…

ubuntu install sqlmap

refer: https://github.com/sqlmapproject/sqlmap 安装sqlmap&#xff0c;可以直接使用git 克隆整个sqlmap项目&#xff1a; git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev 2.然后进入sqlmap-dev&#xff0c;使用命令&#xff1a; python s…

利差是什么?anzo Capital昂首资本换个角度学利差

在交易论坛上最常问也是问的最多的一个问题就是“外汇中的利差是多少?”&#xff0c;今天让anzo Capital昂首资本换个角度试着找出答案。 在现代生活中&#xff0c;我们必须为商品和服务付费&#xff0c;包括金融市场上提供的商品和服务。同样的在金融市场中也需要为商品和服…

庙算兵棋推演平台配置

9月23开始&#xff0c;9月26完成。因为那时刚从大连回来&#xff0c;十一之后又一个紧急项目当项目负责人&#xff0c;所以隔了这么久才发出来。 我尝试进行制作平台AI&#xff0c;想在我的小平板上配好&#xff0c;最好还可以移植。于是我采用WSL&#xff08;windows自带的do…

万界星空科技MES系统中的生产调度流程

MES系统生产调度的目标是达到作业有序、协调、可控和高效的运行效果&#xff0c;作业计划的快速生成以及面向生产扰动事件的快速响应处理是生产调度系统的核心和关键。 为了顺利生成作业计划&#xff0c;需要为调度系统提供完整的产品和工艺信息&#xff0c;MES系统生成作业计…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion 局部重绘(利用SD进行换脸)

首先明确一个概念:绘图是对整个图片进行重绘,但局部重绘是对你选中的位置重绘,这就是两个功能的不同点。 局部重绘详细步骤: 1、用画笔涂黑你想修改的地方,图片右边的蓝色点可以拖动 改变画笔大小,边缘适合用小画笔,中间用粗画笔; 2、在正向关…

C语言普里姆(Prim)算法实现计算国家建设高铁运输网最低造价的建设方案

背景&#xff1a; 描述&#xff1a;为促进全球更好互联互通&#xff0c;亚投行拟在一带一路沿线国家建设高铁运输网&#xff0c;请查阅相关资料 画出沿线国家首都或某些代表性城市的连通图&#xff0c;为其设计长度最短或造价最低的高铁建设方案。 要求&#xff1a;抽象出的图…

实战React18和TS+Vite,跟进实战阅读类App的心得分享

随着 React 18 的发布&#xff0c;以及 TypeScript 和 Vite 在前端开发领域的普及&#xff0c;使用 React 18 结合 TypeScript 和 Vite 开发实战阅读类 App 的经验已经成为了前端开发者们的热门话题。在本文中&#xff0c;我将分享我的心得体会&#xff0c;并给出一些示例代码&…

深度学习第5天:GAN生成对抗网络

☁️主页 Nowl &#x1f525;专栏 《深度学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​​ 一、GAN 1.基本思想 想象一下&#xff0c;市面上有许多仿制的画作&#xff0c;人们为了辨别这些伪造的画&#xff0c;就会提高自己的鉴别技能&#xff0c;然后仿制者…

【EI征稿倒计时3天】第四届IEEE信息科学与教育国际学术会议(ICISE-IE 2023)

第四届IEEE信息科学与教育国际学术会议(ICISE-IE 2023) 2023 4th International Conference on Information Science and Education&#xff08;ICISE-IE 2023&#xff09; ICISE-IE2024已上线岭南师范学院官网&#xff08;点击查看&#xff09; 第四届IEEE信息科学与教育国…

【JavaEE学习】初识进程概念

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、…

IoTDB控制台工具Workbench

文章目录 概述环境要求安装下载启动服务 登录用户界面主界面 连接 概述 Workbench是一个可创建多个连接的图形化数据库管理工具&#xff0c;用于管理IoTDB&#xff0c;提供元数据的可视化与管理、数据的增删改查以及权限控制等功能。Workbench不仅满足专业开发人员的所有需求&…

【lesson7】数据类型之string类型

文章目录 数据类型分类string类型set类型测试 enum类型测试 string类型的内容查找找所有女生&#xff08;enum中&#xff09;找爱好有游泳的人&#xff08;set中&#xff09;找到爱好中有足球和篮球的人 数据类型分类 string类型 set类型 说明&#xff1a; set&#xff1a;集…

Qt 使用百度的离线地图

使用百度离线地图&#xff0c;一下载百度离线包&#xff08;offlinemap&#xff09;&#xff1b;二是准备地图瓦片&#xff08;不同级别的瓦片&#xff09;&#xff1b;三 准备&#xff48;&#xff54;&#xff4d;&#xff4c;主页面&#xff1b;四&#xff0c;&#xff31;&…

免费提升图片清晰度的AI平台,效果对比一目了然!

随着AI技术的不断发展&#xff0c;我们有了更多的机会去挖掘和提升图片清晰度的可能性。无论是老照片的翻新、档案的修复&#xff0c;还是遥感图像的处理、医学影像的分析&#xff0c;AI都能大显身手。在过去可能很难办到的将分辨率低的图片转为高清图&#xff0c;如今借助AI简…

CLIP的升级版Alpha-CLIP:区域感知创新与精细控制

为了增强CLIP在图像理解和编辑方面的能力&#xff0c;上海交通大学、复旦大学、香港中文大学、上海人工智能实验室、澳门大学以及MThreads Inc.等知名机构共同合作推出了Alpha-CLIP。这一创新性的突破旨在克服CLIP的局限性&#xff0c;通过赋予其识别特定区域&#xff08;由点、…

精通TypeScript:打造一个炫酷的天气预报插件

前言 ​ 随着数字化和信息化的发展&#xff0c;数据大屏使用越来越广泛&#xff0c;我们不仅需要展示数据&#xff0c;更需要以一种更加美观的方式展示数据。这就必然需要使用到各种图表组件&#xff0c;比如柱状图、饼图、折线图等等。但是有一些效果不太适合通过这种常规图表…

做数据分析为何要学统计学(5)——什么问题适合使用卡方检验?

卡方检验作为一种非常著名的非参数检验方法&#xff08;不受总体分布因素的限制&#xff09;&#xff0c;在工程试验、临床试验、社会调查等领域被广泛应用。但是也正是因为使用的便捷性&#xff0c;造成时常被误用。本文参阅相关的文献&#xff0c;对卡方检验的适用性进行粗浅…