PBEWithMD5AndDES is a user password entry method, and it PBEWithMD5AndDES an encryption scheme that can be used to protect further data. This is not a password verification or encryption method.
If you are only interested in password verification, decrypt the passwords and replace them with a secure hash and map the hashes in the future. You will also need a password reminder service for the reset password service.
The question is, where is the password that you pass to the PBE algorithm? If this is a fixed password for your application, you just need to replace it and do some rolling update. As an observation, if you store the encrypted data as text, either in hex encoding or in the base-64, there are characters that cannot be displayed in text output and which, therefore, can be added to indicate a new encryption scheme. For example, the symbol : not displayed in the base-64. This will allow you to determine what has been updated and what has not.
If passwords come from the user, each user has his own encrypted password. In this case, you can only re-encrypt all data encrypted with user encryption when the user provides his password.
The most direct replacement will go along the PBEWithSHA256And256BitAES lines. Unfortunately, this is not supported by Java 6, so you will need a third-party JCE library such as Bouncy Castle . Bouncy Castle offers PBEWithSHA256And256BitAES-CBC-BC , which would be a suitable replacement.
The encryption update process is a problem. No matter what data was encrypted using DES, it can only be decrypted using a user password. I assume that you do not have access to passwords. This means that you can only re-encrypt the data when it is given by a person who knows the password. You will have a long period of time when your system contains a mixture of ciphers, so you need a way to determine what is being converted.
If we are talking about files, you can change the suffix of the file or the folder in which they are stored. If we are talking about BLOBs in a database, you can add an additional column to the database table to say what encryption is. If none of these are possible, you can add some form of header to the data to indicate that it has been encrypted in a new way. This is a little risky, since your existing data does not have a header, and it is likely that it will accidentally meet a new header.
It may also be advisable to keep a list of those users who have not yet converted the data, so you can offer them to convert.