对于算法测试向量评估,我尝试在 GCM 模式下执行 AES,以使用任意标签长度值(例如 32 位)进行加密和解密。
当我尝试使用任意标签长度初始化密码时,如下所示:
final Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
GCMParameterSpec parameterSpec = new GCMParameterSpec(tagLen, iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, parameterSpec);
Run Code Online (Sandbox Code Playgroud)
我遇到了这个错误:
java.security.InvalidAlgorithmParameterException: Unsupported TLen value; must be one of {128, 120, 112, 104, 96}
Run Code Online (Sandbox Code Playgroud)
通常,这将是一件好事,因为您不希望标签长度为 32。但是,出于我的目的,我确实需要此标签长度。
有没有办法可以覆盖这些限制以允许任意标签长度?
我正在尝试在我的应用程序中实现应用程序更新,但我查看的文档/教程与实际的最终实现之间存在脱节。
我遵循了以下来源的各种代码教程:
https://developer.android.com/guide/playcore/in-app-updates/kotlin-java#start-update https://www.section.io/engineering-education/android-application-in-app-update -using-android-studio/ https://medium.com/android-news/implement-in-app-update-in-android-68892bd11e35 https://www.raywenderlich.com/8034025-in-app-updates-入门
代码本身相当简单。
但我发现所有这些教程都缺少的是如何实际调用应用内更新。这些教程似乎都专门做了应用内更新活动。如何从我的主要活动中启动此应用内更新活动?或者,如何将应用程序内更新代码合并到我已经存在的主要活动中?
我假设我想要某种异步启动应用程序内更新监听器或类似的东西,但我似乎无法专注于集成所有应用程序内更新代码/应用程序内更新活动的最后一步进入我的应用程序。
编辑:这是我尝试过的示例
public class MainActivity extends AppCompatActivity implements RegionViewAdapter.ItemClickListener {
private InstallStateUpdatedListener installStateUpdatedListener;
private static final int FLEXIBLE_APP_UPDATE_REQ_CODE = 123;
// if you change this value, you must also change it in the app build.gradle
private final String currentVersion = "2021.06.6";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
appUpdateManager = AppUpdateManagerFactory.create(this);
installStateUpdatedListener = state -> {
if (state.installStatus() == InstallStatus.DOWNLOADED) {
popupSnackbarForCompleteUpdate();
} else if (state.installStatus() == InstallStatus.INSTALLED) {
removeInstallStateUpdateListener(); …Run Code Online (Sandbox Code Playgroud)